package org.camunda.bpm.extension.mockito; import static org.assertj.core.api.Assertions.assertThat; import static org.camunda.bpm.extension.mockito.DelegateExpressions.autoMock; 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 org.camunda.bpm.engine.TaskService; 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.engine.test.mock.Mocks; import org.junit.Before; import org.junit.Rule; import org.junit.Test; /** * If everything works as expected, the process can be deployed and executed * without explicitly registering mocks for the delegate, the execution- and the * task-listener. * * @author Jan Galinski, Holisticon AG */ public class AutoMockProcessTest { @Rule public final ProcessEngineRule processEngineRule = new ProcessEngineRule(mostUsefulProcessEngineConfiguration().buildProcessEngine()); private TaskService taskService; @Before public void setUp() { taskService = processEngineRule.getTaskService(); } @Test @Deployment(resources = "MockProcess.bpmn") public void register_mocks_for_all_listeners_and_delegates() throws Exception { autoMock("MockProcess.bpmn"); assertThat(Mocks.get("loadData")).isNotNull(); assertThat(Mocks.get("saveData")).isNotNull(); final ProcessInstance processInstance = processEngineRule.getRuntimeService().startProcessInstanceByKey("process_mock_dummy"); assertThat(processEngineRule.getTaskService().createTaskQuery().processInstanceId(processInstance.getId()).singleResult()).isNotNull(); completeTask(); verifyMocks(); } @Test @Deployment(resources = "MockProcess_withoutNS.bpmn") public void register_mocks_for_all_listeners_and_delegates_noNS() throws Exception { autoMock("MockProcess_withoutNS.bpmn"); assertThat(Mocks.get("loadData")).isNotNull(); assertThat(Mocks.get("saveData")).isNotNull(); final ProcessInstance processInstance = processEngineRule.getRuntimeService().startProcessInstanceByKey("process_mock_dummy"); assertThat(processEngineRule.getTaskService().createTaskQuery().processInstanceId(processInstance.getId()).singleResult()).isNotNull(); completeTask(); verifyMocks(); } private void verifyMocks() { verifyTaskListenerMock("verifyData").executed(); verifyExecutionListenerMock("startProcess").executed(); verifyJavaDelegateMock("loadData").executed(); verifyJavaDelegateMock("saveData").executed(); verifyExecutionListenerMock("beforeLoadData").executed(); } private void completeTask() { taskService.complete(taskService.createTaskQuery().singleResult().getId()); } }