package org.camunda.bpm.needle.example; import java.util.UUID; import javax.inject.Inject; import org.assertj.core.api.Assertions; import org.camunda.bpm.engine.RuntimeService; import org.camunda.bpm.engine.TaskService; import org.camunda.bpm.engine.delegate.JavaDelegate; import org.camunda.bpm.engine.runtime.ProcessInstance; import org.camunda.bpm.engine.task.Task; import org.camunda.bpm.engine.test.Deployment; import org.camunda.bpm.engine.test.assertions.ProcessEngineTests; import org.camunda.bpm.engine.test.mock.Mocks; import org.camunda.bpm.extension.needle.ProcessEngineNeedleRule; import org.junit.Assert; import org.junit.Rule; import org.junit.Test; import org.needle4j.annotation.Mock; import org.needle4j.annotation.ObjectUnderTest; public class TestProcessTest { @Rule public final ProcessEngineNeedleRule processEngineNeedleRule = ProcessEngineNeedleRule.fluentNeedleRule(this).build(); @ObjectUnderTest(implementation = TestProcessStarterBean.class) public TestProcessStarter testProcessStarter; @Mock private JavaDelegate serviceTaskMock; @Inject private TaskService taskService; @Inject private RuntimeService runtimeService; @Test @Deployment(resources = "test-process.bpmn") public void should_deploy_and_start_process_via_starter_bean() { Assert.assertNotNull(processEngineNeedleRule.getDeploymentId()); Mocks.register("serviceTask", serviceTaskMock); final ProcessInstance processInstance = testProcessStarter.startProcessWithUser("foo", UUID.randomUUID().toString()); ProcessEngineTests.assertThat(processInstance).isActive(); ProcessEngineTests.assertThat(processInstance).task().isNotAssigned(); final Task task = ProcessEngineTests.task(); Assertions.assertThat(task).isNotNull(); ProcessEngineTests.assertThat(task).hasDefinitionKey("task_wait"); taskService.complete(task.getId()); ProcessEngineTests.assertThat(processInstance).isEnded(); } }