From 63235a16c15928080cc9b3361d6dc8a339aed559 Mon Sep 17 00:00:00 2001
From: Hubert FONGARNAND <hfongarnand@ippon.fr>
Date: Thu, 21 Dec 2017 09:55:26 +0100
Subject: [PATCH] Add unit testing with test coverage

---
 pom.xml                                       | 13 +++++
 .../jhipster/bpm/process/TestProcessTest.java | 50 +++++++++++++++++++
 2 files changed, 63 insertions(+)

diff --git a/pom.xml b/pom.xml
index fa5e97a..af14fc8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -83,6 +83,7 @@
 
         <!-- jhipster-needle-maven-property -->
         <camunda.springboot.version>2.3.0</camunda.springboot.version>
+        <camunda.testcoverage.version>0.3.2</camunda.testcoverage.version>
     </properties>
 
     <dependencyManagement>
@@ -109,6 +110,18 @@
             <artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
             <version>${camunda.springboot.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.camunda.bpm.springboot</groupId>
+            <artifactId>camunda-bpm-spring-boot-starter-test</artifactId>
+            <version>${camunda.springboot.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.camunda.bpm.extension</groupId>
+            <artifactId>camunda-bpm-process-test-coverage</artifactId>
+            <version>${camunda.testcoverage.version}</version>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>io.github.jhipster</groupId>
             <artifactId>jhipster</artifactId>
diff --git a/src/test/java/fr/ippon/jhipster/bpm/process/TestProcessTest.java b/src/test/java/fr/ippon/jhipster/bpm/process/TestProcessTest.java
index d440db5..5ec4eb5 100644
--- a/src/test/java/fr/ippon/jhipster/bpm/process/TestProcessTest.java
+++ b/src/test/java/fr/ippon/jhipster/bpm/process/TestProcessTest.java
@@ -1,4 +1,54 @@
 package fr.ippon.jhipster.bpm.process;
 
+import fr.ippon.jhipster.bpm.tasks.Printer;
+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.process_test_coverage.junit.rules.ProcessCoverageInMemProcessEngineConfiguration;
+import org.camunda.bpm.extension.process_test_coverage.junit.rules.TestCoverageProcessEngineRuleBuilder;
+import org.camunda.bpm.spring.boot.starter.test.helper.ProcessEngineRuleRunner;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import static org.camunda.bpm.engine.test.assertions.ProcessEngineAssertions.assertThat;
+import static org.camunda.bpm.engine.test.assertions.bpmn.BpmnAwareTests.*;
+import static org.camunda.bpm.extension.mockito.CamundaMockito.autoMock;
+import static org.camunda.bpm.extension.mockito.Expressions.registerMockInstance;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.verify;
+import static org.mockito.internal.verification.VerificationModeFactory.times;
+
+@Deployment(resources = "bpmn/test-1.bpmn")
+@RunWith(ProcessEngineRuleRunner.class)
 public class TestProcessTest {
+
+    private static final String TEST_PROCESS_KEY = "TestProcess";
+
+    @Rule
+    @ClassRule
+    public static ProcessEngineRule rule = TestCoverageProcessEngineRuleBuilder.create((new ProcessCoverageInMemProcessEngineConfiguration()).buildProcessEngine()).build();
+
+
+    private Printer printer;
+
+    @Before
+    public void init() {
+        printer = registerMockInstance(Printer.class);
+    }
+
+    @Test
+    public void startTestProcess()
+    {
+        final ProcessInstance processInstance = runtimeService().startProcessInstanceByKey(TEST_PROCESS_KEY);
+        assertThat(processInstance).isWaitingAt("StartEvent_1");
+        execute(job());
+        verify(printer, times(1)).printMessage(any());
+        assertThat(processInstance).isEnded();
+    }
+
 }
-- 
GitLab