package ee.telekom.workflow.graph.node.event;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import ee.telekom.workflow.graph.AbstractGraphTest;
import ee.telekom.workflow.graph.Graph;
import ee.telekom.workflow.graph.GraphEngine;
import ee.telekom.workflow.graph.GraphFactory;
import ee.telekom.workflow.graph.GraphInstance;
import ee.telekom.workflow.graph.RecordEventsListener;
import ee.telekom.workflow.graph.Token;
public class ThrowEscalationTest extends AbstractGraphTest {
private static List<String> EVENTS_2 = Collections.unmodifiableList(Arrays
.asList(RecordEventsListener.INSTANCE_CREATED,
RecordEventsListener.WORK_ITEM_CREATED + " 2",
RecordEventsListener.WORK_ITEM_CREATED + " 3",
RecordEventsListener.WORK_ITEM_CREATED + " 4",
RecordEventsListener.INSTANCE_STARTED,
RecordEventsListener.WORK_ITEM_COMPLETED + " 2",
RecordEventsListener.WORK_ITEM_CANCELLED + " 3",
RecordEventsListener.WORK_ITEM_CANCELLED + " 4",
RecordEventsListener.INSTANCE_COMPLETED));
private static List<String> EVENTS_3 = Collections.unmodifiableList(Arrays
.asList(RecordEventsListener.INSTANCE_CREATED,
RecordEventsListener.WORK_ITEM_CREATED + " 2",
RecordEventsListener.WORK_ITEM_CREATED + " 3",
RecordEventsListener.WORK_ITEM_CREATED + " 4",
RecordEventsListener.INSTANCE_STARTED,
RecordEventsListener.WORK_ITEM_COMPLETED + " 3",
RecordEventsListener.WORK_ITEM_CANCELLED + " 2",
RecordEventsListener.WORK_ITEM_CANCELLED + " 4",
RecordEventsListener.INSTANCE_COMPLETED));
private static List<String> EVENTS_4 = Collections.unmodifiableList(Arrays
.asList(RecordEventsListener.INSTANCE_CREATED,
RecordEventsListener.WORK_ITEM_CREATED + " 2",
RecordEventsListener.WORK_ITEM_CREATED + " 3",
RecordEventsListener.WORK_ITEM_CREATED + " 4",
RecordEventsListener.INSTANCE_STARTED,
RecordEventsListener.WORK_ITEM_COMPLETED + " 4",
RecordEventsListener.WORK_ITEM_CANCELLED + " 2",
RecordEventsListener.WORK_ITEM_CANCELLED + " 3",
RecordEventsListener.INSTANCE_COMPLETED));
@Test
public void test_simple() {
run_test(2, EVENTS_2);
run_test(3, EVENTS_3);
run_test(4, EVENTS_4);
}
public void run_test(int tokenId, List<String> expectedEvents) {
RecordEventsListener listener = new RecordEventsListener();
GraphEngine engine = createEngine(listener);
Graph graph = GraphFactory.INSTANCE.escalation_three();
GraphInstance instance = engine.start(graph, null);
assertActiveTokens(instance, 4);
Token token2 = getTokenById(instance.getActiveTokens(), 2);
Token token3 = getTokenById(instance.getActiveTokens(), 3);
Token token4 = getTokenById(instance.getActiveTokens(), 4);
assertAwaitingSignal(token2, "invoice");
assertAwaitingSignal(token3, "payment");
assertAwaitingSignal(token4, "unknown");
assertActiveWorkItems(instance, 3);
Token selectedToken = getTokenById(instance.getActiveTokens(), tokenId);
completeWorkItemOnToken(engine, selectedToken);
assertActiveTokens(instance, 0);
assertActiveWorkItems(instance, 0);
Assert.assertEquals(expectedEvents, listener.getEvents());
}
}