package org.camunda.bpm.extension.mockito; import static org.camunda.bpm.engine.variable.Variables.createVariables; import static org.camunda.bpm.extension.mockito.DelegateExpressions.getExecutionListenerMock; import static org.camunda.bpm.extension.mockito.DelegateExpressions.getJavaDelegateMock; import static org.camunda.bpm.extension.mockito.DelegateExpressions.getTaskListenerMock; import static org.camunda.bpm.extension.mockito.DelegateExpressions.registerExecutionListenerMock; import static org.camunda.bpm.extension.mockito.DelegateExpressions.registerJavaDelegateMock; import static org.camunda.bpm.extension.mockito.DelegateExpressions.registerTaskListenerMock; import static org.camunda.bpm.extension.mockito.DelegateExpressions.verifyExecutionListenerMock; import static org.camunda.bpm.extension.mockito.DelegateExpressions.verifyJavaDelegateMock; import static org.camunda.bpm.extension.mockito.DelegateExpressions.verifyTaskListenerMock; import static org.camunda.bpm.extension.mockito.MostUsefulProcessEngineConfiguration.mostUsefulProcessEngineConfiguration; import static org.junit.Assert.assertThat; import org.camunda.bpm.engine.ProcessEngineConfiguration; import org.camunda.bpm.engine.runtime.ProcessInstance; import org.camunda.bpm.engine.test.Deployment; import org.camunda.bpm.engine.test.ProcessEngineRule; import org.camunda.bpm.extension.mockito.mock.FluentJavaDelegateMock; import org.hamcrest.CoreMatchers; import org.junit.Rule; import org.junit.Test; /** * @author Jan Galinski, Holisticon AG */ public class ManualMockProcessTest { private final ProcessEngineConfiguration configuration = mostUsefulProcessEngineConfiguration(); @Rule public final ProcessEngineRule processEngineRule = new ProcessEngineRule(mostUsefulProcessEngineConfiguration().buildProcessEngine()); @Test @Deployment(resources = "MockProcess.bpmn") public void deploy_and_run_process_with_manually_registered_mocks() { registerExecutionListenerMock("startProcess"); final FluentJavaDelegateMock loadData = registerJavaDelegateMock("loadData"); registerTaskListenerMock("verifyData").onExecutionSetVariables(createVariables().putValue("foo", "bar")); registerExecutionListenerMock("beforeLoadData"); final ProcessInstance processInstance = processEngineRule.getRuntimeService().startProcessInstanceByKey("process_mock_dummy"); assertThat(processEngineRule.getTaskService().createTaskQuery().processInstanceId(processInstance.getId()).singleResult(), CoreMatchers.notNullValue()); assertThat((String) processEngineRule.getRuntimeService().getVariable(processInstance.getId(), "foo"), CoreMatchers.is("bar")); verifyJavaDelegateMock(loadData).executed(); verifyExecutionListenerMock("startProcess").executed(); verifyTaskListenerMock("verifyData").executed(); // See if we can get the registered instances and modify their behavior. getJavaDelegateMock("loadData").onExecutionThrowBpmnError("error"); getTaskListenerMock("verifyData").onExecutionThrowBpmnError("error"); getExecutionListenerMock("startProcess").onExecutionThrowBpmnError("error"); } }