/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.component.workflow.execution.internal; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.EnumUtils; import org.easymock.EasyMock; import org.junit.Test; import de.rcenvironment.core.component.workflow.execution.api.WorkflowExecutionContext; import de.rcenvironment.core.component.workflow.execution.api.WorkflowState; import de.rcenvironment.core.component.workflow.model.api.WorkflowDescription; import de.rcenvironment.core.component.workflow.model.api.WorkflowNode; import de.rcenvironment.core.utils.incubator.StateChangeException; /** * Tests for {@link WorkflowStateMachine} (uncompleted). * * @author Doreen Seider */ public class WorkflowStateMachineTest { /** * Tests the intial workflow state. */ @Test public void testInitialWorkflowState() { WorkflowNode wfNodeMock1 = EasyMock.createStrictMock(WorkflowNode.class); EasyMock.expect(wfNodeMock1.isEnabled()).andStubReturn(true); EasyMock.replay(wfNodeMock1); WorkflowNode wfNodeMock2 = EasyMock.createStrictMock(WorkflowNode.class); EasyMock.expect(wfNodeMock2.isEnabled()).andStubReturn(true); EasyMock.replay(wfNodeMock2); List<WorkflowNode> wfNodeMocks = new ArrayList<>(); wfNodeMocks.add(wfNodeMock1); wfNodeMocks.add(wfNodeMock2); WorkflowDescription clonedWfDescMock = EasyMock.createStrictMock(WorkflowDescription.class); WorkflowDescription wfDescMock = EasyMock.createStrictMock(WorkflowDescription.class); EasyMock.expect(wfDescMock.clone()).andStubReturn(clonedWfDescMock); EasyMock.expect(wfDescMock.getWorkflowNodes()).andStubReturn(wfNodeMocks); EasyMock.replay(wfDescMock); WorkflowExecutionContext wfExeCtxMock = EasyMock.createStrictMock(WorkflowExecutionContext.class); EasyMock.expect(wfExeCtxMock.getWorkflowDescription()).andStubReturn(wfDescMock); EasyMock.expect(wfExeCtxMock.getInstanceName()).andStubReturn("wf instance"); EasyMock.expect(wfExeCtxMock.getExecutionIdentifier()).andStubReturn("wf-exe-id"); EasyMock.replay(wfExeCtxMock); WorkflowStateMachineContext wfStateMachineCtxMock = EasyMock.createStrictMock(WorkflowStateMachineContext.class); EasyMock.expect(wfStateMachineCtxMock.getWorkflowExecutionContext()).andStubReturn(wfExeCtxMock); EasyMock.replay(wfStateMachineCtxMock); WorkflowStateMachine machine = new WorkflowStateMachine(wfStateMachineCtxMock); assertEquals(WorkflowState.INIT, machine.getState()); } /** * Tests if each {@link WorkflowStateMachineEvent} is covered by an {@link WorkflowStateMachine.EventProcessorEventProcessor}. * @throws StateChangeException on unexpected error */ @Test public void testEventProcessorsInitialization() throws StateChangeException { @SuppressWarnings("deprecation") WorkflowStateMachine wfStateMachine = new WorkflowStateMachine(); wfStateMachine.initializeEventProcessors(); for (WorkflowStateMachineEventType eventType : EnumUtils.getEnumList(WorkflowStateMachineEventType.class)) { assertTrue(wfStateMachine.eventProcessors.containsKey(eventType)); } } }