package com.effektif.workflow.test.impl;
import com.effektif.workflow.api.condition.And;
import com.effektif.workflow.api.condition.Equals;
import com.effektif.workflow.api.condition.Or;
import com.effektif.workflow.api.condition.Unspecified;
import com.effektif.workflow.api.workflow.ExecutableWorkflow;
import com.effektif.workflow.api.workflow.Transition;
import com.effektif.workflow.impl.WorkflowParser;
import com.effektif.workflow.impl.conditions.AndImpl;
import com.effektif.workflow.impl.conditions.EqualsImpl;
import com.effektif.workflow.impl.conditions.OrImpl;
import com.effektif.workflow.impl.workflow.WorkflowImpl;
import com.effektif.workflow.test.WorkflowTest;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
public class UnspecifiedConditionTest extends WorkflowTest {
WorkflowParser workflowParser;
@Before
public void initializeWorkflowParser() {
workflowParser = new WorkflowParser(configuration);
}
@Test
public void testDoNotParseUnspecifiedCondition() {
Unspecified condition = new Unspecified();
assertNull(workflowParser.parseCondition(condition));
}
@Test
public void testAndIgnoreUnspecifiedSubCondition() {
And andCondition = new And()
.condition(new Unspecified())
.condition(new Equals());
AndImpl andImpl = (AndImpl) workflowParser.parseCondition(andCondition);
assertEquals(1, andImpl.getConditions().size());
assertEquals(EqualsImpl.class, andImpl.getConditions().get(0).getClass());
}
@Test
public void testOrIgnoreUnspecifiedSubCondition() {
Or orCondition = new Or()
.condition(new Unspecified())
.condition(new Equals());
OrImpl orImpl = (OrImpl) workflowParser.parseCondition(orCondition);
assertEquals(1, orImpl.getConditions().size());
assertEquals(EqualsImpl.class, orImpl.getConditions().get(0).getClass());
}
@Test
public void testTransitionIgnoreUnspecifiedCondition() {
ExecutableWorkflow workflow = new ExecutableWorkflow()
.transition("t1", new Transition().condition(new Unspecified()));
WorkflowImpl workflowImpl = workflowParser.parse(workflow);
assertEquals(1, workflowImpl.getTransitions().size());
assertNull(workflowImpl.getTransitions().get(0).condition);
}
}