/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.component.validation.spi; import static org.junit.Assert.assertEquals; import java.util.List; import org.junit.Before; import org.junit.Test; import de.rcenvironment.core.component.api.LoopComponentConstants; import de.rcenvironment.core.component.api.LoopComponentConstants.LoopBehaviorInCaseOfFailure; import de.rcenvironment.core.component.model.api.ComponentDescription; import de.rcenvironment.core.component.model.testutils.ComponentDescriptionMockCreater; import de.rcenvironment.core.component.validation.api.ComponentValidationMessage; /** * * Test for the {@link AbstractLoopComponentValidator}. * * @author Jascha Riedel */ public class AbstractLoopComponentValidatorTest { private AbstractLoopComponentValidator validator; private ComponentDescriptionMockCreater componentDescriptionMockCreater; private List<ComponentValidationMessage> messages; /** Basic setup, and creation of the actual validator. */ @Before public void setUp() { validator = new AbstractLoopComponentValidator() { @Override public String getIdentifier() { return null; } @Override protected List<ComponentValidationMessage> validateOnWorkflowStartComponentSpecific(ComponentDescription componentDescription) { return null; } @Override protected List<ComponentValidationMessage> validateLoopComponentSpecific(ComponentDescription componentDescription) { return null; } }; componentDescriptionMockCreater = new ComponentDescriptionMockCreater(); } /** Test Rerun And Fail but no max reruns set. */ @Test public void testRerunAndFailButNoMaxReruns() { componentDescriptionMockCreater.addConfigurationValue(LoopComponentConstants.CONFIG_KEY_LOOP_FAULT_TOLERANCE_NAV, LoopComponentConstants.LoopBehaviorInCaseOfFailure.RerunAndFail.toString()); validate(); assertEquals(1, messages.size()); assertEquals(ComponentValidationMessage.Type.ERROR, messages.get(0).getType()); } /** Test Rerun And Fail with max reruns set. */ @Test public void testRerunAndFailWithMaxRerunsSet() { componentDescriptionMockCreater.addConfigurationValue(LoopComponentConstants.CONFIG_KEY_LOOP_FAULT_TOLERANCE_NAV, LoopComponentConstants.LoopBehaviorInCaseOfFailure.RerunAndFail.toString()); componentDescriptionMockCreater.addConfigurationValue(LoopComponentConstants.CONFIG_KEY_MAX_RERUN_BEFORE_FAIL_NAV, "4"); validate(); assertEquals(0, messages.size()); } /** Test Rerun and Discard but no max reruns set. */ @Test public void testRerunAndDiscardButNoMaxRerunsSet() { componentDescriptionMockCreater.addConfigurationValue(LoopComponentConstants.CONFIG_KEY_LOOP_FAULT_TOLERANCE_NAV, LoopBehaviorInCaseOfFailure.RerunAndDiscard.toString()); validate(); assertEquals(1, messages.size()); assertEquals(ComponentValidationMessage.Type.ERROR, messages.get(0).getType()); } /** Test Rerun and Discard with max reruns set. */ @Test public void testRerunAndDiscardWithMaxRerunsSet() { componentDescriptionMockCreater.addConfigurationValue(LoopComponentConstants.CONFIG_KEY_LOOP_FAULT_TOLERANCE_NAV, LoopBehaviorInCaseOfFailure.RerunAndDiscard.toString()); componentDescriptionMockCreater.addConfigurationValue(LoopComponentConstants.CONFIG_KEY_MAX_RERUN_BEFORE_DISCARD_NAV, "5"); validate(); assertEquals(0, messages.size()); } private void validate() { messages = validator.validateComponentSpecific(componentDescriptionMockCreater.createComponentDescriptionMock()); } }