From ea826b92114610d7a53b7b552b34c0f92df49986 Mon Sep 17 00:00:00 2001 From: Henning Schmeink <hs344225@fh-muenster.de> Date: Thu, 11 Nov 2021 22:04:19 +0100 Subject: [PATCH] added prio in testcase --- .../MatchingTestcollectionOld.java | 10 - .../onlineschuhdemo/Testcollection-old.java | 1095 +++++++++++++++++ .../onlineschuhdemo/Testcollection.java | 331 ++--- .../main/resources/backup/1636632989310.zip | Bin 0 -> 8249 bytes .../main/resources/backup/1636637866368.zip | Bin 0 -> 8249 bytes .../main/resources/backup/1636645800372.zip | Bin 0 -> 8249 bytes .../main/resources/backup/1636646099109.zip | Bin 0 -> 8249 bytes .../main/resources/backup/1636646289337.zip | Bin 0 -> 8249 bytes .../Testcollection.bpmn-testgen | 13 +- .../Testgenerator/bpmn/data/BPMNTestcase.java | 139 ++- .../prioritization/PrioritizationMetrics.java | 2 +- .../rest/dto/BPMNTestcaseDTO.java | 123 +- .../service/converters/TestConverter.java | 343 +++--- .../rest/service/test/TestController.java | 289 ++--- .../rest/service/test/TestService.java | 1048 ++++++++-------- .../app/components/test/test.component.css | 72 +- .../app/components/test/test.component.html | 309 ++--- 17 files changed, 2363 insertions(+), 1411 deletions(-) create mode 100644 OnlineSchuhDemo/src/main/resources/backup/1636632989310.zip create mode 100644 OnlineSchuhDemo/src/main/resources/backup/1636637866368.zip create mode 100644 OnlineSchuhDemo/src/main/resources/backup/1636645800372.zip create mode 100644 OnlineSchuhDemo/src/main/resources/backup/1636646099109.zip create mode 100644 OnlineSchuhDemo/src/main/resources/backup/1636646289337.zip diff --git a/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/MatchingTestcollectionOld.java b/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/MatchingTestcollectionOld.java index 07d66c6..d12572e 100644 --- a/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/MatchingTestcollectionOld.java +++ b/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/MatchingTestcollectionOld.java @@ -651,12 +651,7 @@ public class MatchingTestcollectionOld { @Deployment(resources = {"retoure.bpmn", "\\schuh_vernichtung_spende.dmn"}) public void casetill1() { - ProcessInstance processInstance = runtimeService() // - .startProcessInstanceByKey("Retoure", withVariables(VAR_BESCHAEDIGT, true, VAR_ERSTATTUNG, true, VAR_KUNDENNUMMER, "123")); // - assertThat(processInstance) // - .isStarted() // - .hasPassed(Events.RETOURE_START) // .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // .hasPassed(ManualTasks.WARE_EINSORTIEREN) // @@ -696,7 +691,6 @@ public class MatchingTestcollectionOld { complete(getLockedTask(lockedTasks0, ServiceTasks.KUNDENDATEN_ERMITTELN), ExternalServiceMockProvider.customerProvider(variableSnapshot0)); assertThat(processInstance) // - .hasPassed(Events.RETOURE_START) // .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // .hasPassed(ManualTasks.WARE_EINSORTIEREN) // @@ -733,7 +727,6 @@ public class MatchingTestcollectionOld { complete(task(UserTasks.MANUELLE_PRUEFUNG)); assertThat(processInstance) // - .hasPassed(Events.RETOURE_START) // .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // .hasPassed(ManualTasks.WARE_EINSORTIEREN) // @@ -770,7 +763,6 @@ public class MatchingTestcollectionOld { complete(task(UserTasks.PAKET_PACKEN)); assertThat(processInstance) // - .hasPassed(Events.RETOURE_START) // .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // .hasPassed(ManualTasks.WARE_EINSORTIEREN) // @@ -807,7 +799,6 @@ public class MatchingTestcollectionOld { complete(task(UserTasks.PAKET_PRUEFEN)); assertThat(processInstance) // - .hasPassed(Events.RETOURE_START) // .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // .hasPassed(ManualTasks.WARE_EINSORTIEREN) // @@ -844,7 +835,6 @@ public class MatchingTestcollectionOld { complete(task(UserTasks.PAKET_SENDEN)); assertThat(processInstance) // - .hasPassed(Events.RETOURE_START) // .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // .hasPassed(ManualTasks.WARE_EINSORTIEREN) // diff --git a/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/Testcollection-old.java b/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/Testcollection-old.java index 94c502e..fcfc89b 100644 --- a/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/Testcollection-old.java +++ b/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/Testcollection-old.java @@ -13,6 +13,9 @@ 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.externaltask.LockedExternalTask; +import org.camunda.bpm.engine.test.mock.Mocks; +import de.sample.onlineschuhdemo.externalaccess.LagerService; +import de.sample.onlineschuhdemo.externalaccess.WarennummerErmittelnDelegate; import org.camunda.bpm.extension.process_test_coverage.junit.rules.TestCoverageProcessEngineRuleBuilder; import org.junit.Before; import org.junit.ClassRule; @@ -27,6 +30,22 @@ public class Testcollection-old { @Rule public static ProcessEngineRule rule = TestCoverageProcessEngineRuleBuilder.create().build(); + private static final String VAR_KUNDENNUMMER = "kundennummer"; + private static final String VAR_MARKE = "marke"; + private static final String VAR_IBAN = "iban"; + private static final String VAR_VORNAME = "vorname"; + private static final String VAR_NACHNAME = "nachname"; + private static final String VAR_PAKETTYP = "pakettyp"; + private static final String VAR_EMAILGESENDET = "emailGesendet"; + private static final String VAR_FIRSTNAME = "firstname"; + private static final String VAR_LASTNAME = "lastname"; + private static final String VAR_IBANREFUND = "ibanRefund"; + private static final String VAR_CONFIRMATIONEMAILSENT = "confirmationEmailSent"; + private static final String VAR_SERVICEIDENTIFIER = "serviceIdentifier"; + private static final String VAR_PREIS = "preis"; + private static final String VAR_ERSTATTUNG = "erstattung"; + private static final String VAR_PAKET = "paket"; + private static final String VAR_BESCHAEDIGT = "beschaedigt"; static { LogFactory.useSlf4jLogging(); @@ -35,5 +54,1081 @@ public class Testcollection-old { @Before public void setup() { init(rule.getProcessEngine()); + + LagerService lagerService = new LagerService(); + + WarennummerErmittelnDelegate warennummerErmittelnDelegate = new WarennummerErmittelnDelegate(); + warennummerErmittelnDelegate.setLagerService(lagerService); + + Mocks.register("warennummer", warennummerErmittelnDelegate); + } + + @Test + @Deployment(resources = {"retoure.bpmn", "\\schuh_vernichtung_spende.dmn"}) + public void normalverpackungAuspacken() { + + ProcessInstance processInstance = runtimeService() // + .startProcessInstanceByKey("Retoure", withVariables(VAR_BESCHAEDIGT, false, VAR_ERSTATTUNG, false, VAR_KUNDENNUMMER, "C-123A456")); // + + assertThat(processInstance) // + .isStarted() // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasNotPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasNotPassed(Gateways.GATEWAY_14EVKAP) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasNotPassed(UserTasks.WARE_VERNICHTEN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isNotEnded(); // + + Map<String, Object> variableSnapshot0 = runtimeService() // + .getVariables(processInstance.getId()); // + List<LockedExternalTask> lockedTasks0 = lockTasks("customer"); + complete(getLockedTask(lockedTasks0, ServiceTasks.KUNDENDATEN_ERMITTELN), ExternalServiceMockProvider.customerProvider(variableSnapshot0)); + + assertThat(processInstance) // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasNotPassed(Gateways.GATEWAY_14EVKAP) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasNotPassed(UserTasks.WARE_VERNICHTEN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isNotEnded(); // + + complete(task(UserTasks.MANUELLE_PRUEFUNG)); + + assertThat(processInstance) // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasNotPassed(Gateways.GATEWAY_14EVKAP) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasNotPassed(UserTasks.WARE_VERNICHTEN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isNotEnded(); // + + complete(task(UserTasks.PAKET_PACKEN), withVariables(VAR_PAKETTYP, "Normalverpackung")); + + assertThat(processInstance) // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasNotPassed(Gateways.GATEWAY_14EVKAP) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasNotPassed(UserTasks.WARE_VERNICHTEN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isNotEnded(); // + + complete(task(UserTasks.PAKET_PRUEFEN), withVariables(VAR_PAKET, false)); + + assertThat(processInstance) // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasPassed(UserTasks.PAKET_PACKEN) // + .hasPassed(UserTasks.PAKET_PRUEFEN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasPassed(Gateways.GATEWAY_14EVKAP) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasPassed(UserTasks.PAKET_PACKEN) // + .hasPassed(UserTasks.PAKET_PRUEFEN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasNotPassed(UserTasks.WARE_VERNICHTEN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isNotEnded(); // + + complete(task(UserTasks.PAKET_PACKEN), withVariables(VAR_PAKETTYP, "Luxusverpackung")); + + assertThat(processInstance) // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasPassed(UserTasks.PAKET_PACKEN) // + .hasPassed(UserTasks.PAKET_PRUEFEN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasPassed(Gateways.GATEWAY_14EVKAP) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasPassed(UserTasks.PAKET_PACKEN) // + .hasPassed(UserTasks.PAKET_PRUEFEN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasNotPassed(UserTasks.WARE_VERNICHTEN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isNotEnded(); // + + complete(task(UserTasks.PAKET_PRUEFEN), withVariables(VAR_PAKET, true)); + + assertThat(processInstance) // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasPassed(UserTasks.PAKET_PACKEN) // + .hasPassed(UserTasks.PAKET_PRUEFEN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasPassed(Gateways.GATEWAY_14EVKAP) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasPassed(UserTasks.PAKET_PACKEN) // + .hasPassed(UserTasks.PAKET_PRUEFEN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasNotPassed(UserTasks.WARE_VERNICHTEN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isNotEnded(); // + + complete(task(UserTasks.PAKET_SENDEN)); + + assertThat(processInstance) // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasPassed(UserTasks.PAKET_PACKEN) // + .hasPassed(UserTasks.PAKET_PRUEFEN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasPassed(Gateways.GATEWAY_14EVKAP) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasPassed(UserTasks.PAKET_PACKEN) // + .hasPassed(UserTasks.PAKET_PRUEFEN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasPassed(UserTasks.PAKET_SENDEN) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasPassed(Events.RETOURE_ENDE) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasNotPassed(UserTasks.WARE_VERNICHTEN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isEnded() // + .variables() // + .contains(entry(VAR_KUNDENNUMMER, "C-123A456"), entry(VAR_VORNAME, "Max"), entry(VAR_ERSTATTUNG, false), entry(VAR_NACHNAME, "Mustermann"), entry(VAR_BESCHAEDIGT, false)); // + + } + + @Test + @Deployment(resources = {"retoure.bpmn", "\\schuh_vernichtung_spende.dmn"}) + public void vernichtenErstattung() { + + ProcessInstance processInstance = runtimeService() // + .startProcessInstanceByKey("Retoure", withVariables(VAR_BESCHAEDIGT, true, VAR_ERSTATTUNG, true, VAR_KUNDENNUMMER, "C-123A456")); // + + assertThat(processInstance) // + .isStarted() // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasNotPassed(UserTasks.WARE_VERNICHTEN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasNotPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasNotPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasNotPassed(Gateways.GATEWAY_14EVKAP) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isNotEnded(); // + + complete(task(UserTasks.WARENDATEN_ERFASSEN), withVariables(VAR_MARKE, "Luxury Foot", VAR_PREIS, 350)); + + assertThat(processInstance) // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasNotPassed(UserTasks.WARE_VERNICHTEN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasNotPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasNotPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasNotPassed(Gateways.GATEWAY_14EVKAP) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isNotEnded(); // + + complete(task(UserTasks.WARE_VERNICHTEN)); + + assertThat(processInstance) // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasPassed(UserTasks.WARE_VERNICHTEN) // + .hasPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasNotPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasNotPassed(Gateways.GATEWAY_14EVKAP) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isNotEnded(); // + + Map<String, Object> variableSnapshot0 = runtimeService() // + .getVariables(processInstance.getId()); // + List<LockedExternalTask> lockedTasks0 = lockTasks("customer"); + complete(getLockedTask(lockedTasks0, ServiceTasks.KUNDENDATEN_ERMITTELN), ExternalServiceMockProvider.customerProvider(variableSnapshot0)); + + assertThat(processInstance) // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasPassed(UserTasks.WARE_VERNICHTEN) // + .hasPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasNotPassed(Gateways.GATEWAY_14EVKAP) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isNotEnded(); // + + Map<String, Object> variableSnapshot1 = runtimeService() // + .getVariables(processInstance.getId()); // + variableSnapshot1.put(VAR_SERVICEIDENTIFIER, "getData"); + List<LockedExternalTask> lockedTasks1 = lockTasks(lockedTasks0, "financial"); + complete(getLockedTask(lockedTasks1, ServiceTasks.FINANZDATEN_ERMITTELN), ExternalServiceMockProvider.financialMock(variableSnapshot1)); + + assertThat(processInstance) // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasPassed(UserTasks.WARE_VERNICHTEN) // + .hasPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasNotPassed(Gateways.GATEWAY_14EVKAP) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isNotEnded(); // + + Map<String, Object> variableSnapshot2 = runtimeService() // + .getVariables(processInstance.getId()); // + variableSnapshot2.put(VAR_SERVICEIDENTIFIER, "refund"); + List<LockedExternalTask> lockedTasks2 = lockTasks(lockedTasks1, "financial"); + complete(getLockedTask(lockedTasks2, ServiceTasks.ERSTATTUNG), ExternalServiceMockProvider.financialMock(variableSnapshot2)); + + assertThat(processInstance) // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasPassed(UserTasks.WARE_VERNICHTEN) // + .hasPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasPassed(ServiceTasks.ERSTATTUNG) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasPassed(Events.RETOURE_ENDE) // + .hasNotPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasNotPassed(Gateways.GATEWAY_14EVKAP) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isEnded() // + .variables() // + .contains(entry(VAR_KUNDENNUMMER, "C-123A456"), entry(VAR_EMAILGESENDET, "Nein"), entry(VAR_MARKE, "Luxury Foot"), entry(VAR_IBAN, "DE12345678900000123456"), entry(VAR_VORNAME, "Max"), entry(VAR_ERSTATTUNG, true), entry(VAR_NACHNAME, "Mustermann"), entry(VAR_BESCHAEDIGT, true)); // + + } + + @Test + @Deployment(resources = {"retoure.bpmn", "\\schuh_vernichtung_spende.dmn"}) + public void casetill1() { + + ProcessInstance processInstance = runtimeService() // + .startProcessInstanceByKey("Retoure", withVariables(VAR_BESCHAEDIGT, true, VAR_ERSTATTUNG, true, VAR_KUNDENNUMMER, "123")); // + + assertThat(processInstance) // + .isStarted() // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasNotPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasNotPassed(Gateways.GATEWAY_14EVKAP) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasNotPassed(UserTasks.WARE_VERNICHTEN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isNotEnded(); // + + Map<String, Object> variableSnapshot0 = runtimeService() // + .getVariables(processInstance.getId()); // + List<LockedExternalTask> lockedTasks0 = lockTasks("customer"); + complete(getLockedTask(lockedTasks0, ServiceTasks.KUNDENDATEN_ERMITTELN), ExternalServiceMockProvider.customerProvider(variableSnapshot0)); + + assertThat(processInstance) // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasNotPassed(Gateways.GATEWAY_14EVKAP) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasNotPassed(UserTasks.WARE_VERNICHTEN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isNotEnded(); // + + Map<String, Object> variableSnapshot1 = runtimeService() // + .getVariables(processInstance.getId()); // + variableSnapshot1.put(VAR_SERVICEIDENTIFIER, "getData"); + List<LockedExternalTask> lockedTasks1 = lockTasks(lockedTasks0, "financial"); + complete(getLockedTask(lockedTasks1, ServiceTasks.FINANZDATEN_ERMITTELN), ExternalServiceMockProvider.financialMock(variableSnapshot1)); + + assertThat(processInstance) // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasNotPassed(Gateways.GATEWAY_14EVKAP) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasNotPassed(UserTasks.WARE_VERNICHTEN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isNotEnded(); // + + Map<String, Object> variableSnapshot2 = runtimeService() // + .getVariables(processInstance.getId()); // + variableSnapshot2.put(VAR_SERVICEIDENTIFIER, "refund"); + List<LockedExternalTask> lockedTasks2 = lockTasks(lockedTasks1, "financial"); + complete(getLockedTask(lockedTasks2, ServiceTasks.ERSTATTUNG), ExternalServiceMockProvider.financialMock(variableSnapshot2)); + + assertThat(processInstance) // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasPassed(ServiceTasks.ERSTATTUNG) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasPassed(Events.RETOURE_ENDE) // + .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasNotPassed(Gateways.GATEWAY_14EVKAP) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasNotPassed(UserTasks.WARE_VERNICHTEN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isEnded() // + .variables() // + .contains(entry(VAR_IBANREFUND, "DE80123084556"), entry(VAR_FIRSTNAME, "Till"), entry(VAR_VORNAME, "till"), entry(VAR_LASTNAME, "Brinkhus"), entry(VAR_SERVICEIDENTIFIER, "getData"), entry(VAR_BESCHAEDIGT, false), entry(VAR_KUNDENNUMMER, "123"), entry(VAR_EMAILGESENDET, "Ja"), entry(VAR_PREIS, 1234), entry(VAR_MARKE, "wer"), entry(VAR_IBAN, "DE80123084556"), entry(VAR_ERSTATTUNG, true), entry(VAR_CONFIRMATIONEMAILSENT, "Ja"), entry(VAR_NACHNAME, "Brinkhus"), entry(VAR_PAKETTYP, "Normalverpackung"), entry(VAR_PAKET, true)); // + + } + + @Test + @Deployment(resources = {"retoure.bpmn", "\\schuh_vernichtung_spende.dmn"}) + public void casetill2() { + + ProcessInstance processInstance = runtimeService() // + .startProcessInstanceByKey("Retoure", withVariables(VAR_BESCHAEDIGT, true, VAR_ERSTATTUNG, true, VAR_KUNDENNUMMER, "12345")); // + + assertThat(processInstance) // + .isStarted() // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasNotPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasNotPassed(Gateways.GATEWAY_14EVKAP) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasNotPassed(UserTasks.WARE_VERNICHTEN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isNotEnded(); // + + Map<String, Object> variableSnapshot0 = runtimeService() // + .getVariables(processInstance.getId()); // + List<LockedExternalTask> lockedTasks0 = lockTasks("customer"); + complete(getLockedTask(lockedTasks0, ServiceTasks.KUNDENDATEN_ERMITTELN), ExternalServiceMockProvider.customerProvider(variableSnapshot0)); + + assertThat(processInstance) // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasNotPassed(Gateways.GATEWAY_14EVKAP) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasNotPassed(UserTasks.WARE_VERNICHTEN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isNotEnded(); // + + Map<String, Object> variableSnapshot1 = runtimeService() // + .getVariables(processInstance.getId()); // + variableSnapshot1.put(VAR_SERVICEIDENTIFIER, "getData"); + List<LockedExternalTask> lockedTasks1 = lockTasks(lockedTasks0, "financial"); + complete(getLockedTask(lockedTasks1, ServiceTasks.FINANZDATEN_ERMITTELN), ExternalServiceMockProvider.financialMock(variableSnapshot1)); + + assertThat(processInstance) // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasNotPassed(Gateways.GATEWAY_14EVKAP) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasNotPassed(UserTasks.WARE_VERNICHTEN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isNotEnded(); // + + Map<String, Object> variableSnapshot2 = runtimeService() // + .getVariables(processInstance.getId()); // + variableSnapshot2.put(VAR_SERVICEIDENTIFIER, "refund"); + List<LockedExternalTask> lockedTasks2 = lockTasks(lockedTasks1, "financial"); + complete(getLockedTask(lockedTasks2, ServiceTasks.ERSTATTUNG), ExternalServiceMockProvider.financialMock(variableSnapshot2)); + + assertThat(processInstance) // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasPassed(ServiceTasks.ERSTATTUNG) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasPassed(Events.RETOURE_ENDE) // + .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasNotPassed(Gateways.GATEWAY_14EVKAP) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasNotPassed(UserTasks.WARE_VERNICHTEN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isEnded(); // + + } + + @Test + @Deployment(resources = {"retoure.bpmn", "\\schuh_vernichtung_spende.dmn"}) + public void TestHenninh() { + + ProcessInstance processInstance = runtimeService() // + .startProcessInstanceByKey("Retoure"); // + + assertThat(processInstance) // + .isStarted() // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasNotPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasNotPassed(Gateways.GATEWAY_14EVKAP) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasNotPassed(UserTasks.WARE_VERNICHTEN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isNotEnded(); // + + Map<String, Object> variableSnapshot0 = runtimeService() // + .getVariables(processInstance.getId()); // + List<LockedExternalTask> lockedTasks0 = lockTasks("customer"); + complete(getLockedTask(lockedTasks0, ServiceTasks.KUNDENDATEN_ERMITTELN), ExternalServiceMockProvider.customerProvider(variableSnapshot0)); + + assertThat(processInstance) // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasNotPassed(Gateways.GATEWAY_14EVKAP) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasNotPassed(UserTasks.WARE_VERNICHTEN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isNotEnded(); // + + complete(task(UserTasks.MANUELLE_PRUEFUNG)); + + assertThat(processInstance) // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasNotPassed(Gateways.GATEWAY_14EVKAP) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasNotPassed(UserTasks.WARE_VERNICHTEN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isNotEnded(); // + + complete(task(UserTasks.PAKET_PACKEN)); + + assertThat(processInstance) // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasNotPassed(Gateways.GATEWAY_14EVKAP) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasNotPassed(UserTasks.WARE_VERNICHTEN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isNotEnded(); // + + complete(task(UserTasks.PAKET_PRUEFEN)); + + assertThat(processInstance) // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasPassed(UserTasks.PAKET_PACKEN) // + .hasPassed(UserTasks.PAKET_PRUEFEN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasNotPassed(Gateways.GATEWAY_14EVKAP) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasNotPassed(UserTasks.WARE_VERNICHTEN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isNotEnded(); // + + complete(task(UserTasks.PAKET_SENDEN)); + + assertThat(processInstance) // + .hasPassed(Events.RETOURE_START) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // + .hasPassed(ManualTasks.WARE_EINSORTIEREN) // + .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // + .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasPassed(UserTasks.PAKET_PACKEN) // + .hasPassed(UserTasks.PAKET_PRUEFEN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasPassed(UserTasks.PAKET_SENDEN) // + .hasPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasPassed(Events.RETOURE_ENDE) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // + .hasNotPassed(Gateways.GATEWAY_14EVKAP) // + .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // + .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // + .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // + .hasNotPassed(UserTasks.WARE_VERNICHTEN) // + .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // + .hasNotPassed(UserTasks.WARE_SPENDEN) // + .isEnded(); // + } } diff --git a/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/Testcollection.java b/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/Testcollection.java index 4eefa28..7d1d743 100644 --- a/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/Testcollection.java +++ b/OnlineSchuhDemo/src-gen/de/sample/onlineschuhdemo/Testcollection.java @@ -607,10 +607,10 @@ public class Testcollection { @Test @Deployment(resources = {"retoure.bpmn", "\\schuh_vernichtung_spende.dmn"}) - public void casetill1() { + public void TestHenninh() { ProcessInstance processInstance = runtimeService() // - .startProcessInstanceByKey("Retoure", withVariables(VAR_BESCHAEDIGT, true, VAR_ERSTATTUNG, true, VAR_KUNDENNUMMER, "123")); // + .startProcessInstanceByKey("Retoure"); // assertThat(processInstance) // .isStarted() // @@ -621,11 +621,6 @@ public class Testcollection { .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // .hasNotPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG) // - .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // - .hasNotPassed(ServiceTasks.ERSTATTUNG) // - .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // - .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // - .hasNotPassed(Events.RETOURE_ENDE) // .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // @@ -633,6 +628,11 @@ public class Testcollection { .hasNotPassed(UserTasks.PAKET_PRUEFEN) // .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // .hasNotPassed(Gateways.GATEWAY_14EVKAP) // @@ -658,11 +658,6 @@ public class Testcollection { .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // - .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // - .hasNotPassed(ServiceTasks.ERSTATTUNG) // - .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // - .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // - .hasNotPassed(Events.RETOURE_ENDE) // .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // @@ -670,44 +665,11 @@ public class Testcollection { .hasNotPassed(UserTasks.PAKET_PRUEFEN) // .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // .hasNotPassed(UserTasks.PAKET_SENDEN) // - .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // - .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // - .hasNotPassed(Gateways.GATEWAY_14EVKAP) // - .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // - .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // - .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // - .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // - .hasNotPassed(UserTasks.WARE_VERNICHTEN) // - .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // - .hasNotPassed(UserTasks.WARE_SPENDEN) // - .isNotEnded(); // - - Map<String, Object> variableSnapshot1 = runtimeService() // - .getVariables(processInstance.getId()); // - variableSnapshot1.put(VAR_SERVICEIDENTIFIER, "getData"); - List<LockedExternalTask> lockedTasks1 = lockTasks(lockedTasks0, "financial"); - complete(getLockedTask(lockedTasks1, ServiceTasks.FINANZDATEN_ERMITTELN), ExternalServiceMockProvider.financialMock(variableSnapshot1)); - - assertThat(processInstance) // - .hasPassed(Events.RETOURE_START) // - .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // - .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // - .hasPassed(ManualTasks.WARE_EINSORTIEREN) // - .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // - .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // - .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // - .hasPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // - .hasNotPassed(ServiceTasks.ERSTATTUNG) // .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // .hasNotPassed(Events.RETOURE_ENDE) // - .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // - .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // - .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // - .hasNotPassed(UserTasks.PAKET_PACKEN) // - .hasNotPassed(UserTasks.PAKET_PRUEFEN) // - .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // - .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // .hasNotPassed(Gateways.GATEWAY_14EVKAP) // @@ -720,11 +682,7 @@ public class Testcollection { .hasNotPassed(UserTasks.WARE_SPENDEN) // .isNotEnded(); // - Map<String, Object> variableSnapshot2 = runtimeService() // - .getVariables(processInstance.getId()); // - variableSnapshot2.put(VAR_SERVICEIDENTIFIER, "refund"); - List<LockedExternalTask> lockedTasks2 = lockTasks(lockedTasks1, "financial"); - complete(getLockedTask(lockedTasks2, ServiceTasks.ERSTATTUNG), ExternalServiceMockProvider.financialMock(variableSnapshot2)); + complete(task(UserTasks.MANUELLE_PRUEFUNG)); assertThat(processInstance) // .hasPassed(Events.RETOURE_START) // @@ -734,62 +692,18 @@ public class Testcollection { .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // - .hasPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // - .hasPassed(ServiceTasks.ERSTATTUNG) // - .hasPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // - .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // - .hasPassed(Events.RETOURE_ENDE) // - .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // - .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // - .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // .hasNotPassed(UserTasks.PAKET_PACKEN) // .hasNotPassed(UserTasks.PAKET_PRUEFEN) // .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // .hasNotPassed(UserTasks.PAKET_SENDEN) // - .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // - .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // - .hasNotPassed(Gateways.GATEWAY_14EVKAP) // - .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // - .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // - .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // - .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // - .hasNotPassed(UserTasks.WARE_VERNICHTEN) // - .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // - .hasNotPassed(UserTasks.WARE_SPENDEN) // - .isEnded() // - .variables() // - .contains(entry(VAR_IBANREFUND, "DE80123084556"), entry(VAR_FIRSTNAME, "Till"), entry(VAR_VORNAME, "till"), entry(VAR_LASTNAME, "Brinkhus"), entry(VAR_SERVICEIDENTIFIER, "getData"), entry(VAR_BESCHAEDIGT, false), entry(VAR_KUNDENNUMMER, "123"), entry(VAR_EMAILGESENDET, "Ja"), entry(VAR_PREIS, 1234), entry(VAR_MARKE, "wer"), entry(VAR_IBAN, "DE80123084556"), entry(VAR_ERSTATTUNG, true), entry(VAR_CONFIRMATIONEMAILSENT, "Ja"), entry(VAR_NACHNAME, "Brinkhus"), entry(VAR_PAKETTYP, "Normalverpackung"), entry(VAR_PAKET, true)); // - - } - - @Test - @Deployment(resources = {"retoure.bpmn", "\\schuh_vernichtung_spende.dmn"}) - public void casetill2() { - - ProcessInstance processInstance = runtimeService() // - .startProcessInstanceByKey("Retoure", withVariables(VAR_BESCHAEDIGT, true, VAR_ERSTATTUNG, true, VAR_KUNDENNUMMER, "12345")); // - - assertThat(processInstance) // - .isStarted() // - .hasPassed(Events.RETOURE_START) // - .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // - .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // - .hasPassed(ManualTasks.WARE_EINSORTIEREN) // - .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // - .hasNotPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // - .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG) // - .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // - .hasNotPassed(ServiceTasks.ERSTATTUNG) // .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // .hasNotPassed(Events.RETOURE_ENDE) // - .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // - .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // - .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // - .hasNotPassed(UserTasks.PAKET_PACKEN) // - .hasNotPassed(UserTasks.PAKET_PRUEFEN) // - .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // - .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // .hasNotPassed(Gateways.GATEWAY_14EVKAP) // @@ -802,10 +716,7 @@ public class Testcollection { .hasNotPassed(UserTasks.WARE_SPENDEN) // .isNotEnded(); // - Map<String, Object> variableSnapshot0 = runtimeService() // - .getVariables(processInstance.getId()); // - List<LockedExternalTask> lockedTasks0 = lockTasks("customer"); - complete(getLockedTask(lockedTasks0, ServiceTasks.KUNDENDATEN_ERMITTELN), ExternalServiceMockProvider.customerProvider(variableSnapshot0)); + complete(task(UserTasks.PAKET_PACKEN)); assertThat(processInstance) // .hasPassed(Events.RETOURE_START) // @@ -815,18 +726,18 @@ public class Testcollection { .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // - .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // - .hasNotPassed(ServiceTasks.ERSTATTUNG) // - .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // - .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // - .hasNotPassed(Events.RETOURE_ENDE) // - .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // - .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // - .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // - .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasPassed(UserTasks.PAKET_PACKEN) // .hasNotPassed(UserTasks.PAKET_PRUEFEN) // .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // .hasNotPassed(Gateways.GATEWAY_14EVKAP) // @@ -839,11 +750,7 @@ public class Testcollection { .hasNotPassed(UserTasks.WARE_SPENDEN) // .isNotEnded(); // - Map<String, Object> variableSnapshot1 = runtimeService() // - .getVariables(processInstance.getId()); // - variableSnapshot1.put(VAR_SERVICEIDENTIFIER, "getData"); - List<LockedExternalTask> lockedTasks1 = lockTasks(lockedTasks0, "financial"); - complete(getLockedTask(lockedTasks1, ServiceTasks.FINANZDATEN_ERMITTELN), ExternalServiceMockProvider.financialMock(variableSnapshot1)); + complete(task(UserTasks.PAKET_PRUEFEN)); assertThat(processInstance) // .hasPassed(Events.RETOURE_START) // @@ -853,18 +760,18 @@ public class Testcollection { .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // - .hasPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // - .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasPassed(UserTasks.PAKET_PACKEN) // + .hasPassed(UserTasks.PAKET_PRUEFEN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // .hasNotPassed(Events.RETOURE_ENDE) // - .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // - .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // - .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // - .hasNotPassed(UserTasks.PAKET_PACKEN) // - .hasNotPassed(UserTasks.PAKET_PRUEFEN) // - .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // - .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // .hasNotPassed(Gateways.GATEWAY_14EVKAP) // @@ -877,11 +784,7 @@ public class Testcollection { .hasNotPassed(UserTasks.WARE_SPENDEN) // .isNotEnded(); // - Map<String, Object> variableSnapshot2 = runtimeService() // - .getVariables(processInstance.getId()); // - variableSnapshot2.put(VAR_SERVICEIDENTIFIER, "refund"); - List<LockedExternalTask> lockedTasks2 = lockTasks(lockedTasks1, "financial"); - complete(getLockedTask(lockedTasks2, ServiceTasks.ERSTATTUNG), ExternalServiceMockProvider.financialMock(variableSnapshot2)); + complete(task(UserTasks.PAKET_SENDEN)); assertThat(processInstance) // .hasPassed(Events.RETOURE_START) // @@ -891,18 +794,18 @@ public class Testcollection { .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // - .hasPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // - .hasPassed(ServiceTasks.ERSTATTUNG) // + .hasPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasPassed(UserTasks.PAKET_PACKEN) // + .hasPassed(UserTasks.PAKET_PRUEFEN) // + .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasPassed(UserTasks.PAKET_SENDEN) // .hasPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // .hasPassed(Events.RETOURE_ENDE) // - .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // - .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // - .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // - .hasNotPassed(UserTasks.PAKET_PACKEN) // - .hasNotPassed(UserTasks.PAKET_PRUEFEN) // - .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // - .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // .hasNotPassed(Gateways.GATEWAY_14EVKAP) // @@ -919,20 +822,20 @@ public class Testcollection { @Test @Deployment(resources = {"retoure.bpmn", "\\schuh_vernichtung_spende.dmn"}) - public void TestHenninh() { - - ProcessInstance processInstance = runtimeService() // - .startProcessInstanceByKey("Retoure"); // + public void TestHenning() { assertThat(processInstance) // - .isStarted() // - .hasPassed(Events.RETOURE_START) // .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // .hasPassed(ManualTasks.WARE_EINSORTIEREN) // .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // .hasNotPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // @@ -940,11 +843,6 @@ public class Testcollection { .hasNotPassed(UserTasks.PAKET_PRUEFEN) // .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // .hasNotPassed(UserTasks.PAKET_SENDEN) // - .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // - .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // - .hasNotPassed(Events.RETOURE_ENDE) // - .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // - .hasNotPassed(ServiceTasks.ERSTATTUNG) // .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // .hasNotPassed(Gateways.GATEWAY_14EVKAP) // @@ -963,13 +861,17 @@ public class Testcollection { complete(getLockedTask(lockedTasks0, ServiceTasks.KUNDENDATEN_ERMITTELN), ExternalServiceMockProvider.customerProvider(variableSnapshot0)); assertThat(processInstance) // - .hasPassed(Events.RETOURE_START) // .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // .hasPassed(ManualTasks.WARE_EINSORTIEREN) // .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // + .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // + .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // + .hasNotPassed(Events.RETOURE_ENDE) // .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // @@ -977,11 +879,6 @@ public class Testcollection { .hasNotPassed(UserTasks.PAKET_PRUEFEN) // .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // .hasNotPassed(UserTasks.PAKET_SENDEN) // - .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // - .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // - .hasNotPassed(Events.RETOURE_ENDE) // - .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // - .hasNotPassed(ServiceTasks.ERSTATTUNG) // .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // .hasNotPassed(Gateways.GATEWAY_14EVKAP) // @@ -994,62 +891,31 @@ public class Testcollection { .hasNotPassed(UserTasks.WARE_SPENDEN) // .isNotEnded(); // - complete(task(UserTasks.MANUELLE_PRUEFUNG)); + Map<String, Object> variableSnapshot1 = runtimeService() // + .getVariables(processInstance.getId()); // + variableSnapshot1.put(VAR_SERVICEIDENTIFIER, "getData"); + List<LockedExternalTask> lockedTasks1 = lockTasks(lockedTasks0, "financial"); + complete(getLockedTask(lockedTasks1, ServiceTasks.FINANZDATEN_ERMITTELN), ExternalServiceMockProvider.financialMock(variableSnapshot1)); assertThat(processInstance) // - .hasPassed(Events.RETOURE_START) // .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // .hasPassed(ManualTasks.WARE_EINSORTIEREN) // .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // - .hasPassed(UserTasks.MANUELLE_PRUEFUNG) // - .hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // - .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // - .hasNotPassed(UserTasks.PAKET_PACKEN) // - .hasNotPassed(UserTasks.PAKET_PRUEFEN) // - .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // - .hasNotPassed(UserTasks.PAKET_SENDEN) // + .hasPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasNotPassed(ServiceTasks.ERSTATTUNG) // .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // .hasNotPassed(Events.RETOURE_ENDE) // - .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // - .hasNotPassed(ServiceTasks.ERSTATTUNG) // - .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // - .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // - .hasNotPassed(Gateways.GATEWAY_14EVKAP) // - .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // - .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // - .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // - .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // - .hasNotPassed(UserTasks.WARE_VERNICHTEN) // - .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // - .hasNotPassed(UserTasks.WARE_SPENDEN) // - .isNotEnded(); // - - complete(task(UserTasks.PAKET_PACKEN)); - - assertThat(processInstance) // - .hasPassed(Events.RETOURE_START) // - .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // - .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // - .hasPassed(ManualTasks.WARE_EINSORTIEREN) // - .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // - .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // - .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // - .hasPassed(UserTasks.MANUELLE_PRUEFUNG) // - .hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // - .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // - .hasPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // .hasNotPassed(UserTasks.PAKET_PRUEFEN) // .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // .hasNotPassed(UserTasks.PAKET_SENDEN) // - .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // - .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // - .hasNotPassed(Events.RETOURE_ENDE) // - .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // - .hasNotPassed(ServiceTasks.ERSTATTUNG) // .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // .hasNotPassed(Gateways.GATEWAY_14EVKAP) // @@ -1062,62 +928,31 @@ public class Testcollection { .hasNotPassed(UserTasks.WARE_SPENDEN) // .isNotEnded(); // - complete(task(UserTasks.PAKET_PRUEFEN)); - - assertThat(processInstance) // - .hasPassed(Events.RETOURE_START) // - .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // - .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // - .hasPassed(ManualTasks.WARE_EINSORTIEREN) // - .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // - .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // - .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // - .hasPassed(UserTasks.MANUELLE_PRUEFUNG) // - .hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // - .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // - .hasPassed(UserTasks.PAKET_PACKEN) // - .hasPassed(UserTasks.PAKET_PRUEFEN) // - .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // - .hasNotPassed(UserTasks.PAKET_SENDEN) // - .hasNotPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // - .hasNotPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // - .hasNotPassed(Events.RETOURE_ENDE) // - .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // - .hasNotPassed(ServiceTasks.ERSTATTUNG) // - .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // - .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // - .hasNotPassed(Gateways.GATEWAY_14EVKAP) // - .hasNotPassed(ManualTasks.WARE_AUSPACKEN_LUXUS) // - .hasNotPassed(UserTasks.WARENDATEN_ERFASSEN) // - .hasNotPassed(BusinessRuleTasks.VERNICHTUNG_ERMITTELN) // - .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG) // - .hasNotPassed(UserTasks.WARE_VERNICHTEN) // - .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // - .hasNotPassed(UserTasks.WARE_SPENDEN) // - .isNotEnded(); // - - complete(task(UserTasks.PAKET_SENDEN)); + Map<String, Object> variableSnapshot2 = runtimeService() // + .getVariables(processInstance.getId()); // + variableSnapshot2.put(VAR_SERVICEIDENTIFIER, "refund"); + List<LockedExternalTask> lockedTasks2 = lockTasks(lockedTasks1, "financial"); + complete(getLockedTask(lockedTasks2, ServiceTasks.ERSTATTUNG), ExternalServiceMockProvider.financialMock(variableSnapshot2)); assertThat(processInstance) // - .hasPassed(Events.RETOURE_START) // .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG) // .hasPassed(Gateways.GATEWAY_BESCHAEDIGT) // .hasPassed(ManualTasks.WARE_EINSORTIEREN) // .hasPassed(Gateways.GATEWAY_BESCHAEDIGT_CLOSE) // .hasPassed(ServiceTasks.KUNDENDATEN_ERMITTELN) // .hasPassed(Gateways.GATEWAY_NEUSENDUNG) // - .hasPassed(UserTasks.MANUELLE_PRUEFUNG) // - .hasPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // - .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // - .hasPassed(UserTasks.PAKET_PACKEN) // - .hasPassed(UserTasks.PAKET_PRUEFEN) // - .hasPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // - .hasPassed(UserTasks.PAKET_SENDEN) // + .hasPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // + .hasPassed(ServiceTasks.ERSTATTUNG) // .hasPassed(Gateways.GATEWAY_NEUSENDUNG_CLOSED) // .hasPassed(Gateways.GATEWAY_PARALLEL_LAGER_NEUSENDUNG_CLOSED) // .hasPassed(Events.RETOURE_ENDE) // - .hasNotPassed(ServiceTasks.FINANZDATEN_ERMITTELN) // - .hasNotPassed(ServiceTasks.ERSTATTUNG) // + .hasNotPassed(UserTasks.MANUELLE_PRUEFUNG) // + .hasNotPassed(ServiceTasks.WARENNUMMER_ERMITTELN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT_CLOSED) // + .hasNotPassed(UserTasks.PAKET_PACKEN) // + .hasNotPassed(UserTasks.PAKET_PRUEFEN) // + .hasNotPassed(Gateways.GATEWAY_EINPACKUNG_FEHLERHAFT) // + .hasNotPassed(UserTasks.PAKET_SENDEN) // .hasNotPassed(Gateways.GATEWAY_AUSPACKEN) // .hasNotPassed(ManualTasks.WARE_AUSPACKEN_NORMAL) // .hasNotPassed(Gateways.GATEWAY_14EVKAP) // @@ -1128,7 +963,9 @@ public class Testcollection { .hasNotPassed(UserTasks.WARE_VERNICHTEN) // .hasNotPassed(Gateways.GATEWAY_VERNICHTUNG_CLOSE) // .hasNotPassed(UserTasks.WARE_SPENDEN) // - .isEnded(); // + .isEnded() // + .variables() // + .contains(entry(VAR_KUNDENNUMMER, "123123123312")); // } } diff --git a/OnlineSchuhDemo/src/main/resources/backup/1636632989310.zip b/OnlineSchuhDemo/src/main/resources/backup/1636632989310.zip new file mode 100644 index 0000000000000000000000000000000000000000..63fd01fcb7e744234dc9b5a0696367e958012788 GIT binary patch literal 8249 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 TNBC=9m_OC^Pg_gz*XZ8>a=pc* literal 0 HcmV?d00001 diff --git a/OnlineSchuhDemo/src/main/resources/backup/1636637866368.zip b/OnlineSchuhDemo/src/main/resources/backup/1636637866368.zip new file mode 100644 index 0000000000000000000000000000000000000000..be14658cf008db510e09957ddedcc42cc957ca00 GIT binary patch literal 8249 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 TNBC=9m_OC^Pg_gz*XZ8>>FdaF literal 0 HcmV?d00001 diff --git a/OnlineSchuhDemo/src/main/resources/backup/1636645800372.zip b/OnlineSchuhDemo/src/main/resources/backup/1636645800372.zip new file mode 100644 index 0000000000000000000000000000000000000000..55d3681b4f9eca24e170146cd72954175de10917 GIT binary patch literal 8249 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 TJi=e=!u+YOf7)7#zefKCcOJ&v literal 0 HcmV?d00001 diff --git a/OnlineSchuhDemo/src/main/resources/backup/1636646099109.zip b/OnlineSchuhDemo/src/main/resources/backup/1636646099109.zip new file mode 100644 index 0000000000000000000000000000000000000000..65391134162a9ee8cb8bbec3454eeb1e44e60ed6 GIT binary patch literal 8249 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 TNBC=9m_OC^Pg_gz*XZ8>vIxmg literal 0 HcmV?d00001 diff --git a/OnlineSchuhDemo/src/main/resources/backup/1636646289337.zip b/OnlineSchuhDemo/src/main/resources/backup/1636646289337.zip new file mode 100644 index 0000000000000000000000000000000000000000..c5ec593c7be817a530016966012f4ba34c132512 GIT binary patch literal 8249 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 TNBC=9m_OC^Pg_gz*XZ8>ZIQ<C literal 0 HcmV?d00001 diff --git a/OnlineSchuhDemo/src/test/java/de/sample/onlineschuhdemo/Testcollection.bpmn-testgen b/OnlineSchuhDemo/src/test/java/de/sample/onlineschuhdemo/Testcollection.bpmn-testgen index 8b1f8b5..799943e 100644 --- a/OnlineSchuhDemo/src/test/java/de/sample/onlineschuhdemo/Testcollection.bpmn-testgen +++ b/OnlineSchuhDemo/src/test/java/de/sample/onlineschuhdemo/Testcollection.bpmn-testgen @@ -155,14 +155,9 @@ with variables for Warendaten_erfassen : [ marke = "Luxury Foot" , preis = 350 ] with check : [ kundennummer == "C-123A456" , marke == "Luxury Foot" , iban == "DE12345678900000123456" , vorname == "Max" , nachname == "Mustermann" , emailGesendet == "Nein" , erstattung == true , beschaedigt == true ] with mocks : [ financialMock , customerProvider ] ; -Test casetill1 for Flow_0 -with variables for Retoure_Start : [ kundennummer = "123" , erstattung = true , beschaedigt = true ] -with check : [ kundennummer == "123" , marke == "wer" , iban == "DE80123084556" , vorname == "till" , nachname == "Brinkhus" , pakettyp == "Normalverpackung" , emailGesendet == "Ja" , firstname == "Till" , lastname == "Brinkhus" , ibanRefund == "DE80123084556" , confirmationEmailSent == "Ja" , serviceIdentifier == "getData" , preis == 1234 , erstattung == true , paket == true , beschaedigt == false ] -with mocks : [ financialMock , customerProvider ] ; - -Test casetill2 for Flow_0 -with variables for Retoure_Start : [ kundennummer = "12345" , erstattung = true , beschaedigt = true ] -with mocks : [ financialMock , customerProvider ] ; - Test TestHenninh for Flow_1 with mocks : [ Warennummer_ermitteln , customerProvider ] ; + +Test TestHenning for Flow_0 +with priority 100 +with check : [ kundennummer == "123123123312" ] with mocks : [ financialMock , customerProvider ] ; diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/bpmn/data/BPMNTestcase.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/bpmn/data/BPMNTestcase.java index 4df2c27..325c885 100644 --- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/bpmn/data/BPMNTestcase.java +++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/bpmn/data/BPMNTestcase.java @@ -1,65 +1,74 @@ -package de.fhmuenster.masterthesis.Testgenerator.bpmn.data; - -import java.util.ArrayList; -import java.util.List; - -public class BPMNTestcase { - - private String name; - private String flow; - private List<TaskVariables> taskVariableList; - private List<EndCheck> endChecks; - private List<String> mocks; - - public BPMNTestcase() { - this.taskVariableList = new ArrayList<>(); - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getFlow() { - return flow; - } - - public void setFlow(String flow) { - this.flow = flow; - } - - public List<TaskVariables> getTaskVariableList() { - return taskVariableList; - } - - public void setTaskVariableList(List<TaskVariables> taskVariableList) { - this.taskVariableList = taskVariableList; - } - - public void addTaskVariables(TaskVariables taskVariables) { - taskVariableList.add(taskVariables); - } - - public List<EndCheck> getEndChecks() { - return endChecks; - } - - public void setEndChecks(List<EndCheck> endChecks) { - this.endChecks = endChecks; - } - - public void addEndCheck(EndCheck endCheck) { - this.endChecks.add(endCheck); - } - - public List<String> getMocks() { - return mocks; - } - - public void setMocks(List<String> mocks) { - this.mocks = mocks; - } -} +package de.fhmuenster.masterthesis.Testgenerator.bpmn.data; + +import java.util.ArrayList; +import java.util.List; + +public class BPMNTestcase { + + private String name; + private String flow; + private List<TaskVariables> taskVariableList; + private List<EndCheck> endChecks; + private List<String> mocks; + private int priority; + + public BPMNTestcase() { + this.taskVariableList = new ArrayList<>(); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getFlow() { + return flow; + } + + public void setFlow(String flow) { + this.flow = flow; + } + + public List<TaskVariables> getTaskVariableList() { + return taskVariableList; + } + + public void setTaskVariableList(List<TaskVariables> taskVariableList) { + this.taskVariableList = taskVariableList; + } + + public void addTaskVariables(TaskVariables taskVariables) { + taskVariableList.add(taskVariables); + } + + public List<EndCheck> getEndChecks() { + return endChecks; + } + + public void setEndChecks(List<EndCheck> endChecks) { + this.endChecks = endChecks; + } + + public void addEndCheck(EndCheck endCheck) { + this.endChecks.add(endCheck); + } + + public List<String> getMocks() { + return mocks; + } + + public void setMocks(List<String> mocks) { + this.mocks = mocks; + } + + public int getPriority() { + return priority; + } + + public void setPriority(int priority) { + this.priority = priority; + } +} diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/PrioritizationMetrics.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/PrioritizationMetrics.java index 972745f..9a8b7f2 100644 --- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/PrioritizationMetrics.java +++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/prioritization/PrioritizationMetrics.java @@ -30,7 +30,7 @@ public class PrioritizationMetrics { * Metric 1 (m1) * @author Tim Flicke, Henning Schmeink */ - public List<Flow> m1_flowAffected(List<Flow> newFlows, List<F+low> oldFlows) { + public List<Flow> m1_flowAffected(List<Flow> newFlows, List<Flow> oldFlows) { List<Flow> affectedFlows = new ArrayList<Flow>(); try diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/dto/BPMNTestcaseDTO.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/dto/BPMNTestcaseDTO.java index 3e5dd3a..a5f29b5 100644 --- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/dto/BPMNTestcaseDTO.java +++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/dto/BPMNTestcaseDTO.java @@ -1,57 +1,66 @@ -package de.fhmuenster.masterthesis.Testgenerator.rest.dto; - -import java.util.ArrayList; -import java.util.List; - -public class BPMNTestcaseDTO { - - private String name; - private String flow; - private List<TaskVariablesDTO> taskVariableList; - private List<EndCheckDTO> endChecks; - private List<String> mocks; - - public BPMNTestcaseDTO() { - this.taskVariableList = new ArrayList<>(); - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getFlow() { - return flow; - } - - public void setFlow(String flow) { - this.flow = flow; - } - - public List<TaskVariablesDTO> getTaskVariableList() { - return taskVariableList; - } - - public void setTaskVariableList(List<TaskVariablesDTO> taskVariableList) { - this.taskVariableList = taskVariableList; - } - - public List<EndCheckDTO> getEndChecks() { - return endChecks; - } - - public void setEndChecks(List<EndCheckDTO> endChecks) { - this.endChecks = endChecks; - } - - public List<String> getMocks() { - return mocks; - } - - public void setMocks(List<String> mocks) { - this.mocks = mocks; - } -} +package de.fhmuenster.masterthesis.Testgenerator.rest.dto; + +import java.util.ArrayList; +import java.util.List; + +public class BPMNTestcaseDTO { + + private String name; + private String flow; + private List<TaskVariablesDTO> taskVariableList; + private List<EndCheckDTO> endChecks; + private List<String> mocks; + private int priority; + + public BPMNTestcaseDTO() { + this.taskVariableList = new ArrayList<>(); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getFlow() { + return flow; + } + + public void setFlow(String flow) { + this.flow = flow; + } + + public List<TaskVariablesDTO> getTaskVariableList() { + return taskVariableList; + } + + public void setTaskVariableList(List<TaskVariablesDTO> taskVariableList) { + this.taskVariableList = taskVariableList; + } + + public List<EndCheckDTO> getEndChecks() { + return endChecks; + } + + public void setEndChecks(List<EndCheckDTO> endChecks) { + this.endChecks = endChecks; + } + + public List<String> getMocks() { + return mocks; + } + + public void setMocks(List<String> mocks) { + this.mocks = mocks; + } + + public int getPriority() { + return priority; + } + + public void setPriority(int priority) { + this.priority = priority; + } +} diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/converters/TestConverter.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/converters/TestConverter.java index 4bacc7c..eae6d7f 100644 --- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/converters/TestConverter.java +++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/converters/TestConverter.java @@ -1,170 +1,173 @@ -package de.fhmuenster.masterthesis.Testgenerator.rest.service.converters; - -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; - -import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNTestcase; -import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.EndCheck; -import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.EndCheckCompareOperator; -import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.TaskVariables; -import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.VariableValue; -import de.fhmuenster.masterthesis.serialization.TestgeneratorDSLObjectCreator; -import de.fhmuenster.masterthesis.testgeneratorDSL.BooleanVariableEquals; -import de.fhmuenster.masterthesis.testgeneratorDSL.BooleanVariableNotEquals; -import de.fhmuenster.masterthesis.testgeneratorDSL.EndChecks; -import de.fhmuenster.masterthesis.testgeneratorDSL.Flow; -import de.fhmuenster.masterthesis.testgeneratorDSL.FlowElement; -import de.fhmuenster.masterthesis.testgeneratorDSL.IntVariableEquals; -import de.fhmuenster.masterthesis.testgeneratorDSL.IntVariableNotEquals; -import de.fhmuenster.masterthesis.testgeneratorDSL.Mock; -import de.fhmuenster.masterthesis.testgeneratorDSL.StringVariableEquals; -import de.fhmuenster.masterthesis.testgeneratorDSL.StringVariableNotEquals; -import de.fhmuenster.masterthesis.testgeneratorDSL.Test; -import de.fhmuenster.masterthesis.testgeneratorDSL.Variable; -import de.fhmuenster.masterthesis.testgeneratorDSL.VariableDeclaration; -import de.fhmuenster.masterthesis.testgeneratorDSL.VariableDeclarations; -import de.fhmuenster.masterthesis.utils.TestgeneratorDSLUtils; - -public class TestConverter { - - public static Test getTest(BPMNTestcase testcase, Flow flow, List<FlowElement> flowElements, - List<Variable> variables, List<Mock> mocks) { - List<VariableDeclarations> variableDeclarationsList = new ArrayList<>(); - for (TaskVariables entry : testcase.getTaskVariableList()) { - String taskName = entry.getTask(); - FlowElement task = getFlowElement(flowElements, taskName); - List<VariableValue> variableValues = entry.getVariableValues(); - - List<VariableDeclaration> variableDeclaration = new ArrayList<>(); - for (VariableValue variableEntry : variableValues) { - String variableName = variableEntry.getVariable(); - Object variableValue = variableEntry.getValue(); - variableDeclaration.add(VariableConverter.getVariableDeclaration(variables, variableName, variableValue)); - } - - VariableDeclarations variableDeclarations = TestgeneratorDSLObjectCreator.createVariableDeclarations(task, - variableDeclaration); - variableDeclarationsList.add(variableDeclarations); - } - - List<de.fhmuenster.masterthesis.testgeneratorDSL.EndCheck> endChecks = new ArrayList<>(); - for (EndCheck endCheck : testcase.getEndChecks()) { - if(EndCheckCompareOperator.EQUALS.equals(endCheck.getCompareOperator())) { - String variableName = endCheck.getVariable(); - Object variableValue = endCheck.getValue(); - endChecks.add(VariableConverter.getVariableEquals(variables, variableName, variableValue)); - } - - if(EndCheckCompareOperator.NOT_EQUALS.equals(endCheck.getCompareOperator())) { - String variableName = endCheck.getVariable(); - Object variableValue = endCheck.getValue(); - endChecks.add(VariableConverter.getVariableNotEquals(variables, variableName, variableValue)); - } - } - - EndChecks endCheckDeclaration = TestgeneratorDSLObjectCreator.createEndChecks(endChecks); - - return TestgeneratorDSLObjectCreator.createTest(testcase.getName(), flow, variableDeclarationsList, endCheckDeclaration, mocks); - } - - public static FlowElement getFlowElement(List<FlowElement> flowElements, String name) { - Optional<FlowElement> flowElementOpt = flowElements.stream() // - .filter(flowElement -> flowElement.getName().equals(name)) // - .findAny(); - - return flowElementOpt.isPresent() ? flowElementOpt.get() : null; - } - - public static BPMNTestcase getBPMNTestcase(Test testcase) { - List<TaskVariables> taskVariableList = new ArrayList<>(); - for (VariableDeclarations variableDeclarations : TestgeneratorDSLUtils.getVariableDeclarations(testcase)) { - List<VariableValue> variableValues = new ArrayList<>(); - for (VariableDeclaration variableDeclaration : TestgeneratorDSLUtils.getVariables(variableDeclarations)) { - variableValues.add(VariableConverter.getVariableValue(variableDeclaration)); - } - - TaskVariables taskVariables = new TaskVariables(); - taskVariables.setTask(variableDeclarations.getTaskReference().getRef().getName()); - taskVariables.setVariableValues(variableValues); - taskVariableList.add(taskVariables); - } - - List<EndCheck> endCheckList = new ArrayList<>(); - for (de.fhmuenster.masterthesis.testgeneratorDSL.EndCheck endCheck : TestgeneratorDSLUtils.getEndChecks(testcase)) { - endCheckList.add(getEndCheck(endCheck)); - } - - List<String> mocks = new ArrayList<>(); - for(Mock mock : TestgeneratorDSLUtils.getMocks(testcase)) { - mocks.add(mock.getName()); - } - - BPMNTestcase bpmnTestcase = new BPMNTestcase(); - bpmnTestcase.setName(testcase.getName()); - bpmnTestcase.setFlow(testcase.getFlowReference().getRef().getName()); - bpmnTestcase.setTaskVariableList(taskVariableList); - bpmnTestcase.setEndChecks(endCheckList); - bpmnTestcase.setMocks(mocks); - - return bpmnTestcase; - } - - private static EndCheck getEndCheck(de.fhmuenster.masterthesis.testgeneratorDSL.EndCheck endCheck) { - EndCheck endCheckResult = new EndCheck(); - - if (endCheck instanceof StringVariableEquals) { - String name = ((StringVariableEquals) endCheck).getKey().getName(); - String value = ((StringVariableEquals) endCheck).getValue(); - endCheckResult.setVariable(name); - endCheckResult.setValue(value); - endCheckResult.setCompareOperator(EndCheckCompareOperator.EQUALS); - } - - if (endCheck instanceof IntVariableEquals) { - String name = ((IntVariableEquals) endCheck).getKey().getName(); - int value = ((IntVariableEquals) endCheck).getValue(); - endCheckResult.setVariable(name); - endCheckResult.setValue(value); - endCheckResult.setCompareOperator(EndCheckCompareOperator.EQUALS); - } - - if (endCheck instanceof BooleanVariableEquals) { - String name = ((BooleanVariableEquals) endCheck).getKey().getName(); - de.fhmuenster.masterthesis.testgeneratorDSL.Boolean valueDSL = ((BooleanVariableEquals) endCheck) - .getValue(); - Boolean value = TestgeneratorDSLUtils.mapDSLBoolean(valueDSL); - endCheckResult.setVariable(name); - endCheckResult.setValue(value); - endCheckResult.setCompareOperator(EndCheckCompareOperator.EQUALS); - } - - if (endCheck instanceof StringVariableNotEquals) { - String name = ((StringVariableNotEquals) endCheck).getKey().getName(); - String value = ((StringVariableNotEquals) endCheck).getValue(); - endCheckResult.setVariable(name); - endCheckResult.setValue(value); - endCheckResult.setCompareOperator(EndCheckCompareOperator.NOT_EQUALS); - } - - if (endCheck instanceof IntVariableNotEquals) { - String name = ((IntVariableNotEquals) endCheck).getKey().getName(); - int value = ((IntVariableNotEquals) endCheck).getValue(); - endCheckResult.setVariable(name); - endCheckResult.setValue(value); - endCheckResult.setCompareOperator(EndCheckCompareOperator.NOT_EQUALS); - } - - if (endCheck instanceof BooleanVariableNotEquals) { - String name = ((BooleanVariableNotEquals) endCheck).getKey().getName(); - de.fhmuenster.masterthesis.testgeneratorDSL.Boolean valueDSL = ((BooleanVariableNotEquals) endCheck) - .getValue(); - Boolean value = TestgeneratorDSLUtils.mapDSLBoolean(valueDSL); - endCheckResult.setVariable(name); - endCheckResult.setValue(value); - endCheckResult.setCompareOperator(EndCheckCompareOperator.NOT_EQUALS); - } - - return endCheckResult; - } -} +package de.fhmuenster.masterthesis.Testgenerator.rest.service.converters; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNTestcase; +import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.EndCheck; +import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.EndCheckCompareOperator; +import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.TaskVariables; +import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.VariableValue; +import de.fhmuenster.masterthesis.serialization.TestgeneratorDSLObjectCreator; +import de.fhmuenster.masterthesis.testgeneratorDSL.BooleanVariableEquals; +import de.fhmuenster.masterthesis.testgeneratorDSL.BooleanVariableNotEquals; +import de.fhmuenster.masterthesis.testgeneratorDSL.EndChecks; +import de.fhmuenster.masterthesis.testgeneratorDSL.Flow; +import de.fhmuenster.masterthesis.testgeneratorDSL.FlowElement; +import de.fhmuenster.masterthesis.testgeneratorDSL.IntVariableEquals; +import de.fhmuenster.masterthesis.testgeneratorDSL.IntVariableNotEquals; +import de.fhmuenster.masterthesis.testgeneratorDSL.Mock; +import de.fhmuenster.masterthesis.testgeneratorDSL.StringVariableEquals; +import de.fhmuenster.masterthesis.testgeneratorDSL.StringVariableNotEquals; +import de.fhmuenster.masterthesis.testgeneratorDSL.Test; +import de.fhmuenster.masterthesis.testgeneratorDSL.Variable; +import de.fhmuenster.masterthesis.testgeneratorDSL.VariableDeclaration; +import de.fhmuenster.masterthesis.testgeneratorDSL.VariableDeclarations; +import de.fhmuenster.masterthesis.utils.TestgeneratorDSLUtils; + +public class TestConverter { + + public static Test getTest(BPMNTestcase testcase, Flow flow, List<FlowElement> flowElements, + List<Variable> variables, List<Mock> mocks) { + List<VariableDeclarations> variableDeclarationsList = new ArrayList<>(); + for (TaskVariables entry : testcase.getTaskVariableList()) { + String taskName = entry.getTask(); + FlowElement task = getFlowElement(flowElements, taskName); + List<VariableValue> variableValues = entry.getVariableValues(); + + List<VariableDeclaration> variableDeclaration = new ArrayList<>(); + for (VariableValue variableEntry : variableValues) { + String variableName = variableEntry.getVariable(); + Object variableValue = variableEntry.getValue(); + variableDeclaration.add(VariableConverter.getVariableDeclaration(variables, variableName, variableValue)); + } + + VariableDeclarations variableDeclarations = TestgeneratorDSLObjectCreator.createVariableDeclarations(task, + variableDeclaration); + variableDeclarationsList.add(variableDeclarations); + } + + List<de.fhmuenster.masterthesis.testgeneratorDSL.EndCheck> endChecks = new ArrayList<>(); + for (EndCheck endCheck : testcase.getEndChecks()) { + if(EndCheckCompareOperator.EQUALS.equals(endCheck.getCompareOperator())) { + String variableName = endCheck.getVariable(); + Object variableValue = endCheck.getValue(); + endChecks.add(VariableConverter.getVariableEquals(variables, variableName, variableValue)); + } + + if(EndCheckCompareOperator.NOT_EQUALS.equals(endCheck.getCompareOperator())) { + String variableName = endCheck.getVariable(); + Object variableValue = endCheck.getValue(); + endChecks.add(VariableConverter.getVariableNotEquals(variables, variableName, variableValue)); + } + } + + EndChecks endCheckDeclaration = TestgeneratorDSLObjectCreator.createEndChecks(endChecks); + + // @Tim, @Henning Priorität hier hinzufügen + int prio = 100; + return TestgeneratorDSLObjectCreator.createTest(testcase.getName(), flow, variableDeclarationsList, endCheckDeclaration, mocks, prio); + } + + public static FlowElement getFlowElement(List<FlowElement> flowElements, String name) { + Optional<FlowElement> flowElementOpt = flowElements.stream() // + .filter(flowElement -> flowElement.getName().equals(name)) // + .findAny(); + + return flowElementOpt.isPresent() ? flowElementOpt.get() : null; + } + + public static BPMNTestcase getBPMNTestcase(Test testcase) { + List<TaskVariables> taskVariableList = new ArrayList<>(); + for (VariableDeclarations variableDeclarations : TestgeneratorDSLUtils.getVariableDeclarations(testcase)) { + List<VariableValue> variableValues = new ArrayList<>(); + for (VariableDeclaration variableDeclaration : TestgeneratorDSLUtils.getVariables(variableDeclarations)) { + variableValues.add(VariableConverter.getVariableValue(variableDeclaration)); + } + + TaskVariables taskVariables = new TaskVariables(); + taskVariables.setTask(variableDeclarations.getTaskReference().getRef().getName()); + taskVariables.setVariableValues(variableValues); + taskVariableList.add(taskVariables); + } + + List<EndCheck> endCheckList = new ArrayList<>(); + for (de.fhmuenster.masterthesis.testgeneratorDSL.EndCheck endCheck : TestgeneratorDSLUtils.getEndChecks(testcase)) { + endCheckList.add(getEndCheck(endCheck)); + } + + List<String> mocks = new ArrayList<>(); + for(Mock mock : TestgeneratorDSLUtils.getMocks(testcase)) { + mocks.add(mock.getName()); + } + + BPMNTestcase bpmnTestcase = new BPMNTestcase(); + bpmnTestcase.setName(testcase.getName()); + bpmnTestcase.setFlow(testcase.getFlowReference().getRef().getName()); + bpmnTestcase.setTaskVariableList(taskVariableList); + bpmnTestcase.setEndChecks(endCheckList); + bpmnTestcase.setMocks(mocks); + bpmnTestcase.setPriority(testcase.getPriority()); + + return bpmnTestcase; + } + + private static EndCheck getEndCheck(de.fhmuenster.masterthesis.testgeneratorDSL.EndCheck endCheck) { + EndCheck endCheckResult = new EndCheck(); + + if (endCheck instanceof StringVariableEquals) { + String name = ((StringVariableEquals) endCheck).getKey().getName(); + String value = ((StringVariableEquals) endCheck).getValue(); + endCheckResult.setVariable(name); + endCheckResult.setValue(value); + endCheckResult.setCompareOperator(EndCheckCompareOperator.EQUALS); + } + + if (endCheck instanceof IntVariableEquals) { + String name = ((IntVariableEquals) endCheck).getKey().getName(); + int value = ((IntVariableEquals) endCheck).getValue(); + endCheckResult.setVariable(name); + endCheckResult.setValue(value); + endCheckResult.setCompareOperator(EndCheckCompareOperator.EQUALS); + } + + if (endCheck instanceof BooleanVariableEquals) { + String name = ((BooleanVariableEquals) endCheck).getKey().getName(); + de.fhmuenster.masterthesis.testgeneratorDSL.Boolean valueDSL = ((BooleanVariableEquals) endCheck) + .getValue(); + Boolean value = TestgeneratorDSLUtils.mapDSLBoolean(valueDSL); + endCheckResult.setVariable(name); + endCheckResult.setValue(value); + endCheckResult.setCompareOperator(EndCheckCompareOperator.EQUALS); + } + + if (endCheck instanceof StringVariableNotEquals) { + String name = ((StringVariableNotEquals) endCheck).getKey().getName(); + String value = ((StringVariableNotEquals) endCheck).getValue(); + endCheckResult.setVariable(name); + endCheckResult.setValue(value); + endCheckResult.setCompareOperator(EndCheckCompareOperator.NOT_EQUALS); + } + + if (endCheck instanceof IntVariableNotEquals) { + String name = ((IntVariableNotEquals) endCheck).getKey().getName(); + int value = ((IntVariableNotEquals) endCheck).getValue(); + endCheckResult.setVariable(name); + endCheckResult.setValue(value); + endCheckResult.setCompareOperator(EndCheckCompareOperator.NOT_EQUALS); + } + + if (endCheck instanceof BooleanVariableNotEquals) { + String name = ((BooleanVariableNotEquals) endCheck).getKey().getName(); + de.fhmuenster.masterthesis.testgeneratorDSL.Boolean valueDSL = ((BooleanVariableNotEquals) endCheck) + .getValue(); + Boolean value = TestgeneratorDSLUtils.mapDSLBoolean(valueDSL); + endCheckResult.setVariable(name); + endCheckResult.setValue(value); + endCheckResult.setCompareOperator(EndCheckCompareOperator.NOT_EQUALS); + } + + return endCheckResult; + } +} diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/test/TestController.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/test/TestController.java index 5a16edc..a40128a 100644 --- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/test/TestController.java +++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/test/TestController.java @@ -1,143 +1,146 @@ -package de.fhmuenster.masterthesis.Testgenerator.rest.service.test; - -import java.util.List; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.servlet.config.annotation.EnableWebMvc; - -import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNServiceWithMocks; -import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNTestcase; -import de.fhmuenster.masterthesis.Testgenerator.rest.dto.BPMNTestcaseDTO; -import de.fhmuenster.masterthesis.Testgenerator.rest.dto.ExternalTopicWithMockDTO; -import de.fhmuenster.masterthesis.Testgenerator.rest.dto.FlowElementEnhancedDTO; -import de.fhmuenster.masterthesis.Testgenerator.rest.dto.FlowInfoDTO; -import de.fhmuenster.masterthesis.Testgenerator.rest.dto.LoopDTO; -import de.fhmuenster.masterthesis.Testgenerator.rest.dto.ServiceWithMockDTO; -import de.fhmuenster.masterthesis.Testgenerator.rest.dto.VariableProposalDTO; -import de.fhmuenster.masterthesis.Testgenerator.rest.mapper.ObjectMapper; -import de.fhmuenster.masterthesis.Testgenerator.rest.service.flow.FlowService; -import de.fhmuenster.masterthesis.Testgenerator.rest.service.mock.MockService; -import de.fhmuenster.masterthesis.Testgenerator.rest.service.project.Project; -import de.fhmuenster.masterthesis.Testgenerator.rest.service.project.ProjectService; -import de.fhmuenster.masterthesis.serialization.VariableProposal; -import de.fhmuenster.masterthesis.testgeneratorDSL.Flow; -import de.fhmuenster.masterthesis.testgeneratorDSL.FlowElement; -import de.fhmuenster.masterthesis.testgeneratorDSL.Loop; - -@RestController -@EnableWebMvc -public class TestController { - - @Autowired - private ProjectService projectService; - @Autowired - private FlowService flowService; - @Autowired - private TestService testService; - @Autowired - private MockService mockService; - - private static final ObjectMapper MAPPER = new ObjectMapper() // - .withVariableConverter() // - .withCompareOperatorConverter(); // - - public TestController() { - } - - @RequestMapping(path = "/project/{projectId}/initLoop", method = RequestMethod.POST) - public List<LoopDTO> initLoops(@PathVariable(required = true) Long projectId) { - Project projectForId = projectService.getProjectForId(projectId); - - List<Loop> loops = testService.initLoops(projectForId); - - return MAPPER.mapToList(loops, LoopDTO.class); - } - - @RequestMapping(path = "/project/{projectId}/initTest", method = RequestMethod.POST) - public void initTestcollection(@PathVariable(required = true) Long projectId) { - Project projectForId = projectService.getProjectForId(projectId); - - testService.initTestcollection(projectForId); - } - - @RequestMapping(path = "/project/{projectId}/test/{testId}", method = RequestMethod.PUT) - public void updateTest(@PathVariable(required = true) Long projectId, @PathVariable(required = true) String testId, - @RequestBody(required = true) BPMNTestcaseDTO testcaseDTO) { - Project projectForId = projectService.getProjectForId(projectId); - - BPMNTestcase testcase = MAPPER.map(testcaseDTO, BPMNTestcase.class); - - testService.updateTest(testId, testcase, projectForId.getProjectDirectories()); - } - - @RequestMapping(path = "/project/{projectId}/test", method = RequestMethod.POST) - public void addTest(@PathVariable(required = true) Long projectId, - @RequestBody(required = true) BPMNTestcaseDTO testcaseDTO) { - Project projectForId = projectService.getProjectForId(projectId); - - BPMNTestcase testcase = MAPPER.map(testcaseDTO, BPMNTestcase.class); - - testService.addTest(testcase, projectForId.getProjectDirectories()); - } - - @RequestMapping(path = "/project/{projectId}/flow/{flowId}/test", method = RequestMethod.GET) - public List<BPMNTestcaseDTO> getTests(@PathVariable(required = true) Long projectId, - @PathVariable(required = true) String flowId) { - Project projectForId = projectService.getProjectForId(projectId); - - Flow flow = flowService.getFlow(projectForId.getProjectDirectories(), flowId); - List<BPMNTestcase> tests = testService.getTests(projectForId.getProjectDirectories(), flow); - - List<BPMNTestcaseDTO> dtos = MAPPER.mapToList(tests, BPMNTestcaseDTO.class); - return dtos; - } - - @RequestMapping(path = "/project/{projectId}/test/{testId}", method = RequestMethod.GET) - public BPMNTestcaseDTO getTest(@PathVariable(required = true) Long projectId, - @PathVariable(required = true) String testId) { - Project projectForId = projectService.getProjectForId(projectId); - - BPMNTestcase test = testService.getTest(projectForId.getProjectDirectories(), testId); - return MAPPER.map(test, BPMNTestcaseDTO.class); - } - - @RequestMapping(path = "/project/{projectId}/test/{testId}", method = RequestMethod.DELETE) - public void deleteTest(@PathVariable(required = true) Long projectId, - @PathVariable(required = true) String testId) { - Project projectForId = projectService.getProjectForId(projectId); - - testService.deleteTest(projectForId.getProjectDirectories(), testId); - } - - @SuppressWarnings("rawtypes") - @RequestMapping(path = "/project/{projectId}/flow/{flowId}/info", method = RequestMethod.GET) - public FlowInfoDTO getInfo(@PathVariable(required = true) Long projectId, - @PathVariable(required = true) String flowId) { - Project projectForId = projectService.getProjectForId(projectId); - - Flow flow = flowService.getFlow(projectForId.getProjectDirectories(), flowId); - List<FlowElement> userInputTasks = testService.getUserInputTasks(flow); - List<FlowElementEnhancedDTO> userInputDtos = MAPPER.mapToList(userInputTasks, FlowElementEnhancedDTO.class); - - List<VariableProposal<?>> variableProposals = testService - .getVariableProposals(projectForId.getProjectDirectories()); - List<VariableProposalDTO> variableDtos = MAPPER.mapToList(variableProposals, VariableProposalDTO.class); - - BPMNServiceWithMocks servicesWithMocks = mockService.getServicesWithMocks(projectForId.getProjectDirectories(), flow); - List<ServiceWithMockDTO> delegateServices = MAPPER.mapToList(servicesWithMocks.getDelegateServices(), ServiceWithMockDTO.class); - List<ExternalTopicWithMockDTO> externalTopics = MAPPER.mapToList(servicesWithMocks.getExternalTopics(), ExternalTopicWithMockDTO.class); - - FlowInfoDTO flowInfoDTO = new FlowInfoDTO(); - flowInfoDTO.setUserInputs(userInputDtos); - flowInfoDTO.setVariables(variableDtos); - flowInfoDTO.setDelegateServices(delegateServices); - flowInfoDTO.setExternalTopics(externalTopics); - - return flowInfoDTO; - } -} +package de.fhmuenster.masterthesis.Testgenerator.rest.service.test; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; + +import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNServiceWithMocks; +import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNTestcase; +import de.fhmuenster.masterthesis.Testgenerator.rest.dto.BPMNTestcaseDTO; +import de.fhmuenster.masterthesis.Testgenerator.rest.dto.ExternalTopicWithMockDTO; +import de.fhmuenster.masterthesis.Testgenerator.rest.dto.FlowElementEnhancedDTO; +import de.fhmuenster.masterthesis.Testgenerator.rest.dto.FlowInfoDTO; +import de.fhmuenster.masterthesis.Testgenerator.rest.dto.LoopDTO; +import de.fhmuenster.masterthesis.Testgenerator.rest.dto.ServiceWithMockDTO; +import de.fhmuenster.masterthesis.Testgenerator.rest.dto.VariableProposalDTO; +import de.fhmuenster.masterthesis.Testgenerator.rest.mapper.ObjectMapper; +import de.fhmuenster.masterthesis.Testgenerator.rest.service.flow.FlowService; +import de.fhmuenster.masterthesis.Testgenerator.rest.service.mock.MockService; +import de.fhmuenster.masterthesis.Testgenerator.rest.service.project.Project; +import de.fhmuenster.masterthesis.Testgenerator.rest.service.project.ProjectService; +import de.fhmuenster.masterthesis.serialization.VariableProposal; +import de.fhmuenster.masterthesis.testgeneratorDSL.Flow; +import de.fhmuenster.masterthesis.testgeneratorDSL.FlowElement; +import de.fhmuenster.masterthesis.testgeneratorDSL.Loop; + +@RestController +@EnableWebMvc +public class TestController { + + @Autowired + private ProjectService projectService; + @Autowired + private FlowService flowService; + @Autowired + private TestService testService; + @Autowired + private MockService mockService; + + private static final ObjectMapper MAPPER = new ObjectMapper() // + .withVariableConverter() // + .withCompareOperatorConverter(); // + + public TestController() { + } + + @RequestMapping(path = "/project/{projectId}/initLoop", method = RequestMethod.POST) + public List<LoopDTO> initLoops(@PathVariable(required = true) Long projectId) { + Project projectForId = projectService.getProjectForId(projectId); + + List<Loop> loops = testService.initLoops(projectForId); + + return MAPPER.mapToList(loops, LoopDTO.class); + } + + @RequestMapping(path = "/project/{projectId}/initTest", method = RequestMethod.POST) + public void initTestcollection(@PathVariable(required = true) Long projectId) { + Project projectForId = projectService.getProjectForId(projectId); + + testService.initTestcollection(projectForId); + } + + @RequestMapping(path = "/project/{projectId}/test/{testId}", method = RequestMethod.PUT) + public void updateTest(@PathVariable(required = true) Long projectId, @PathVariable(required = true) String testId, + @RequestBody(required = true) BPMNTestcaseDTO testcaseDTO) { + Project projectForId = projectService.getProjectForId(projectId); + + BPMNTestcase testcase = MAPPER.map(testcaseDTO, BPMNTestcase.class); + + testService.updateTest(testId, testcase, projectForId.getProjectDirectories()); + } + + @RequestMapping(path = "/project/{projectId}/test", method = RequestMethod.POST) + public void addTest(@PathVariable(required = true) Long projectId, + @RequestBody(required = true) BPMNTestcaseDTO testcaseDTO) { + Project projectForId = projectService.getProjectForId(projectId); + + BPMNTestcase testcase = MAPPER.map(testcaseDTO, BPMNTestcase.class); + + testService.addTest(testcase, projectForId.getProjectDirectories()); + } + + @RequestMapping(path = "/project/{projectId}/flow/{flowId}/test", method = RequestMethod.GET) + public List<BPMNTestcaseDTO> getTests(@PathVariable(required = true) Long projectId, + @PathVariable(required = true) String flowId) { + Project projectForId = projectService.getProjectForId(projectId); + + Flow flow = flowService.getFlow(projectForId.getProjectDirectories(), flowId); + List<BPMNTestcase> tests = testService.getTests(projectForId.getProjectDirectories(), flow); + + List<BPMNTestcaseDTO> dtos = MAPPER.mapToList(tests, BPMNTestcaseDTO.class); + return dtos; + } + + @RequestMapping(path = "/project/{projectId}/test/{testId}", method = RequestMethod.GET) + public BPMNTestcaseDTO getTest(@PathVariable(required = true) Long projectId, + @PathVariable(required = true) String testId) { + Project projectForId = projectService.getProjectForId(projectId); + + BPMNTestcase test = testService.getTest(projectForId.getProjectDirectories(), testId); + + // @Tim, @Henning Debug + System.out.println("Priority: " + test.getPriority()); + return MAPPER.map(test, BPMNTestcaseDTO.class); + } + + @RequestMapping(path = "/project/{projectId}/test/{testId}", method = RequestMethod.DELETE) + public void deleteTest(@PathVariable(required = true) Long projectId, + @PathVariable(required = true) String testId) { + Project projectForId = projectService.getProjectForId(projectId); + + testService.deleteTest(projectForId.getProjectDirectories(), testId); + } + + @SuppressWarnings("rawtypes") + @RequestMapping(path = "/project/{projectId}/flow/{flowId}/info", method = RequestMethod.GET) + public FlowInfoDTO getInfo(@PathVariable(required = true) Long projectId, + @PathVariable(required = true) String flowId) { + Project projectForId = projectService.getProjectForId(projectId); + + Flow flow = flowService.getFlow(projectForId.getProjectDirectories(), flowId); + List<FlowElement> userInputTasks = testService.getUserInputTasks(flow); + List<FlowElementEnhancedDTO> userInputDtos = MAPPER.mapToList(userInputTasks, FlowElementEnhancedDTO.class); + + List<VariableProposal<?>> variableProposals = testService + .getVariableProposals(projectForId.getProjectDirectories()); + List<VariableProposalDTO> variableDtos = MAPPER.mapToList(variableProposals, VariableProposalDTO.class); + + BPMNServiceWithMocks servicesWithMocks = mockService.getServicesWithMocks(projectForId.getProjectDirectories(), flow); + List<ServiceWithMockDTO> delegateServices = MAPPER.mapToList(servicesWithMocks.getDelegateServices(), ServiceWithMockDTO.class); + List<ExternalTopicWithMockDTO> externalTopics = MAPPER.mapToList(servicesWithMocks.getExternalTopics(), ExternalTopicWithMockDTO.class); + + FlowInfoDTO flowInfoDTO = new FlowInfoDTO(); + flowInfoDTO.setUserInputs(userInputDtos); + flowInfoDTO.setVariables(variableDtos); + flowInfoDTO.setDelegateServices(delegateServices); + flowInfoDTO.setExternalTopics(externalTopics); + + return flowInfoDTO; + } +} diff --git a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/test/TestService.java b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/test/TestService.java index 9e4f962..c6d365b 100644 --- a/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/test/TestService.java +++ b/Testgenerator/src/main/java/de/fhmuenster/masterthesis/Testgenerator/rest/service/test/TestService.java @@ -1,524 +1,524 @@ -package de.fhmuenster.masterthesis.Testgenerator.rest.service.test; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.stream.Collectors; - -import org.camunda.bpm.model.bpmn.instance.BusinessRuleTask; -import org.camunda.bpm.model.bpmn.instance.EndEvent; -import org.camunda.bpm.model.bpmn.instance.Gateway; -import org.camunda.bpm.model.bpmn.instance.ManualTask; -import org.camunda.bpm.model.bpmn.instance.ScriptTask; -import org.camunda.bpm.model.bpmn.instance.SequenceFlow; -import org.camunda.bpm.model.bpmn.instance.ServiceTask; -import org.camunda.bpm.model.bpmn.instance.StartEvent; -import org.camunda.bpm.model.bpmn.instance.UserTask; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNBundle; -import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNExpressions; -import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNFlow; -import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNFlowSet; -import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNFormFields; -import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNIOParameters; -import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNTestcase; -import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNTestdata; -import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.BPMNExpressionScanner; -import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.BPMNFlowScanner; -import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.BPMNVariableBoundaryScanner; -import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.BPMNVariableFormFieldScanner; -import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.BPMNVariableIOScanner; -import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.loop.Loop; -import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.loop.LoopFrequencyAssigner; -import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.loop.LoopScanner; -import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.sese.IsElement; -import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.sese.SESEBuilder; -import de.fhmuenster.masterthesis.Testgenerator.dmn.data.DMNBundle; -import de.fhmuenster.masterthesis.Testgenerator.dmn.data.DMNDecisionModel; -import de.fhmuenster.masterthesis.Testgenerator.dmn.data.DMNVariables; -import de.fhmuenster.masterthesis.Testgenerator.embeddedform.data.EmbeddedFormDocument; -import de.fhmuenster.masterthesis.Testgenerator.logging.LoggerProvider; -import de.fhmuenster.masterthesis.Testgenerator.logging.TestgeneratorLogger; -import de.fhmuenster.masterthesis.Testgenerator.rest.service.converters.TestConverter; -import de.fhmuenster.masterthesis.Testgenerator.rest.service.flow.FlowService; -import de.fhmuenster.masterthesis.Testgenerator.rest.service.mock.MockService; -import de.fhmuenster.masterthesis.Testgenerator.rest.service.project.Project; -import de.fhmuenster.masterthesis.Testgenerator.rest.service.project.ProjectDirectories; -import de.fhmuenster.masterthesis.Testgenerator.utils.BPMNParseUtils; -import de.fhmuenster.masterthesis.Testgenerator.utils.ProjectDirectoryUtils; -import de.fhmuenster.masterthesis.serialization.TestgeneratorDSLObjectCreator; -import de.fhmuenster.masterthesis.serialization.TestgeneratorDSLSerializer; -import de.fhmuenster.masterthesis.serialization.VariableProposal; -import de.fhmuenster.masterthesis.testgeneratorDSL.BPMNDiagram; -import de.fhmuenster.masterthesis.testgeneratorDSL.ExternalTopic; -import de.fhmuenster.masterthesis.testgeneratorDSL.Flow; -import de.fhmuenster.masterthesis.testgeneratorDSL.FlowElement; -import de.fhmuenster.masterthesis.testgeneratorDSL.Mock; -import de.fhmuenster.masterthesis.testgeneratorDSL.Test; -import de.fhmuenster.masterthesis.testgeneratorDSL.Variable; -import de.fhmuenster.masterthesis.testgeneratorDSL.VariableDeclaration; -import de.fhmuenster.masterthesis.utils.TestgeneratorDSLUtils; - -@Service -public class TestService { - - private static final TestgeneratorLogger LOGGER = LoggerProvider.getLogger(TestService.class); - private static final String NAMESPACE_URI_BPMN = "http://camunda.org/schema/1.0/bpmn"; - - private long millisDataStart; - private long millisDataEnd; - - @Autowired - private FlowService flowService; - @Autowired - private MockService mockService; - - public TestService() { - } - - public List<de.fhmuenster.masterthesis.testgeneratorDSL.Loop> initLoops(Project project) { - Path testFilePath = ProjectDirectoryUtils.getTestspecificationPath(project.getProjectDirectories()); - String testpackage = project.getProjectDirectories().getTestPackage(); - List<de.fhmuenster.masterthesis.testgeneratorDSL.Loop> dslLoops = null; - - try { - TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testFilePath.toString()); - - BPMNDiagram bpmnDiagram = serializer.getBPMNDiagram("process"); - if (bpmnDiagram == null) { - BPMNBundle bpmnBundle = BPMNParseUtils.readBPMNBundle(project); - List<DMNBundle> dmnBundles = BPMNParseUtils.readDMNBundles(project); - List<EmbeddedFormDocument> embeddedFormDocuments = BPMNParseUtils.readEmbeddedFormDocuments(project); - List<DMNDecisionModel> decisionModels = BPMNParseUtils.getDecisionModels(dmnBundles); - bpmnDiagram = BPMNParseUtils.getBPMNDiagram(bpmnBundle.getProcessModel(), testpackage, decisionModels, - embeddedFormDocuments); - - // Build Single-Entry-Single-Exit-Graph - SESEBuilder seseBuilder = new SESEBuilder(bpmnBundle.getModelInstance()); - seseBuilder.buildSingleEntrySingleExit(); - List<IsElement> seseTransform = seseBuilder.getSeseTransform(); - - // Scan for loops - LoopScanner loopScanner = new LoopScanner(seseTransform); - List<Loop> loops = loopScanner.scanLoops(); - - // Set frequency for loops - LoopFrequencyAssigner frequencyAssigner = new LoopFrequencyAssigner(loops); - frequencyAssigner.assign(); - - serializer.addBPMNDiagram(bpmnDiagram); - dslLoops = flowService.getDSLLoops(loops); - dslLoops.forEach(dslLoop -> serializer.addLoop(dslLoop)); - - serializer.serialize(); - } - - } catch (IOException e) { - e.printStackTrace(); - } - - if (dslLoops == null) { - return flowService.getLoops(project.getProjectDirectories()); - } - - return dslLoops; - } - - public void initTestcollection(Project project) { - Path testFilePath = ProjectDirectoryUtils.getTestspecificationPath(project.getProjectDirectories()); - String testpackage = project.getProjectDirectories().getTestPackage(); - - try { - TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testFilePath.toString()); - - BPMNDiagram bpmnDiagram = serializer.getBPMNDiagram("process"); - List<FlowElement> flowElementsCheck = serializer.getFlowElements(); - - if (bpmnDiagram != null && flowElementsCheck.isEmpty()) { - BPMNBundle bpmnBundle = BPMNParseUtils.readBPMNBundle(project); - List<DMNBundle> dmnBundles = BPMNParseUtils.readDMNBundles(project); - List<EmbeddedFormDocument> embeddedFormDocuments = BPMNParseUtils.readEmbeddedFormDocuments(project); - List<DMNDecisionModel> decisionModels = BPMNParseUtils.getDecisionModels(dmnBundles); - - List<de.fhmuenster.masterthesis.testgeneratorDSL.Loop> dslLoops = serializer.getLoops(); - List<Loop> loops = getLoops(dslLoops); - - // Parse different flows of process model - BPMNFlowScanner scanner = new BPMNFlowScanner(bpmnBundle.getModelInstance(), loops); - BPMNFlowSet flowSet = scanner.scanFlows(); - - if (LOGGER.isInfo()) { - millisDataStart = System.currentTimeMillis(); - } - - // Read FormFields from Events and Tasks - BPMNVariableFormFieldScanner variableScanner = new BPMNVariableFormFieldScanner(flowSet); - EmbeddedFormDocument[] embeddedArray = new EmbeddedFormDocument[embeddedFormDocuments.size()]; - variableScanner.setEmbeddedFormDocuments(embeddedFormDocuments.toArray(embeddedArray)); - variableScanner.doScan(); - BPMNFormFields formFields = variableScanner.getFormFields(); - - // Read Input/Output-Parameters - BPMNVariableIOScanner variableIOScanner = new BPMNVariableIOScanner(flowSet); - variableIOScanner.doScan(); - BPMNIOParameters bpmnIOParameters = variableIOScanner.getBpmnIOParameters(); - - // Parse conditional expressions - BPMNExpressionScanner expressionScanner = new BPMNExpressionScanner(flowSet); - expressionScanner.doScan(); - BPMNExpressions expressions = expressionScanner.getExpressions(); - - List<DMNVariables> dmnVariableList = BPMNParseUtils.getDMNVariables(dmnBundles); - - BPMNVariableBoundaryScanner boundaryScanner = new BPMNVariableBoundaryScanner(expressions, formFields, - bpmnIOParameters, dmnVariableList); - boundaryScanner.doScan(); - HashMap<String, BPMNTestdata<?>> variableTestdata = boundaryScanner.getVariableTestdata(); - - List<Variable> variables = BPMNParseUtils.getVariables(formFields, variableTestdata, bpmnIOParameters); - - if (LOGGER.isInfo()) { - millisDataEnd = System.currentTimeMillis(); - LOGGER.info("Time needed for Data-Scan: " + (millisDataEnd - millisDataStart) + " ms"); - } - - List<ExternalTopic> externalTopics = getExternalTopics(flowSet); - List<FlowElement> flowElements = getFlowElements(flowSet, variables, formFields, expressions, - bpmnIOParameters, externalTopics); - List<Flow> flows = getFlows(bpmnDiagram, flowSet, flowElements); - - flowElements.forEach(flowElement -> serializer.addFlowElement(flowElement)); - variables.forEach(var -> serializer.addVariable(var)); - externalTopics.forEach(externalTopic -> serializer.addExternalTopic(externalTopic)); - flows.forEach(flow -> serializer.addFlow(flow)); - - serializer.serialize(); - } - - } catch (IOException e) { - e.printStackTrace(); - } - } - - public void addTest(BPMNTestcase testcase, ProjectDirectories projectDirectories) { - Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories); - - try { - TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString()); - - checkTestIdAlreadyTaken(testcase.getName(), serializer); - - addTest(testcase, serializer, projectDirectories); - - serializer.serialize(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public void updateTest(String testId, BPMNTestcase testcase, ProjectDirectories projectDirectories) { - Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories); - - try { - TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString()); - - if (!testId.equals(testcase.getName())) { - checkTestIdAlreadyTaken(testcase.getName(), serializer); - } - - Test testToDelete = getTest(testId, serializer); - serializer.deleteTest(testToDelete.getName()); - - addTest(testcase, serializer, projectDirectories); - - serializer.serialize(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - private void addTest(BPMNTestcase testcase, TestgeneratorDSLSerializer serializer, - ProjectDirectories projectDirectories) { - Flow flow = serializer.getFlow(testcase.getFlow()); - List<FlowElement> flowElements = serializer.getFlowElements(); - List<Variable> variables = serializer.getVariables(); - List<Mock> mocks = mockService.getMocks(testcase.getMocks(), projectDirectories); - - Test newTest = TestConverter.getTest(testcase, flow, flowElements, variables, mocks); - serializer.addTest(newTest); - } - - public List<VariableProposal<?>> getVariableProposals(ProjectDirectories projectDirectories) { - Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories); - - List<VariableProposal<?>> variableProposals = new ArrayList<>(); - try { - TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString()); - - variableProposals = serializer.getVariableProposals(); - } catch (IOException e) { - e.printStackTrace(); - } - - return variableProposals; - } - - public List<BPMNTestcase> getTests(ProjectDirectories projectDirectories, Flow flow) { - Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories); - - try { - TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString()); - - List<Test> testsForFlow = serializer.getTestsForFlow(flow); - List<BPMNTestcase> bpmnTestcases = new ArrayList<>(); - for (Test test : testsForFlow) { - bpmnTestcases.add(TestConverter.getBPMNTestcase(test)); - } - - return bpmnTestcases; - } catch (IOException e) { - // - } - - return null; - } - - public BPMNTestcase getTest(ProjectDirectories projectDirectories, String testId) { - Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories); - - try { - TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString()); - - Test test = getTest(testId, serializer); - - BPMNTestcase bpmnTestcase = TestConverter.getBPMNTestcase(test); - return bpmnTestcase; - } catch (IOException e) { - // - } - - return null; - } - - public void deleteTest(ProjectDirectories projectDirectories, String testId) { - Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories); - - try { - TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString()); - - serializer.deleteTest(testId); - - serializer.serialize(); - } catch (IOException e) { - // - } - } - - public List<FlowElement> getUserInputTasks(Flow flow) { - return TestgeneratorDSLUtils.getUserInputElements(flow); - } - - public Map<String, Long> getFlowTestcount(ProjectDirectories projectDirectories) { - Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories); - - try { - TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString()); - Map<String, Long> flowTestCount = serializer.getFlowTestCount(); - - return flowTestCount; - } catch (IOException e) { - // - } - - return new HashMap<>(); - } - - private List<FlowElement> getFlowElements(BPMNFlowSet flowSet, List<Variable> variables, BPMNFormFields formFields, - BPMNExpressions expressions, BPMNIOParameters bpmnIOParameters, List<ExternalTopic> externalTopics) { - return flowSet.getFlowElements().stream() // - .map(flowElement -> getFlowElement(flowElement, variables, formFields, expressions, bpmnIOParameters, - externalTopics)) // - .collect(Collectors.toList()); // - } - - private FlowElement getFlowElement(org.camunda.bpm.model.bpmn.instance.FlowElement flowElement, - List<Variable> variables, BPMNFormFields formFields, BPMNExpressions expressions, - BPMNIOParameters bpmnIOParameters, List<ExternalTopic> externalTopics) { - - if (flowElement instanceof StartEvent) { - List<Variable> inputVariables = filterFlowElementVariables(variables, - formFields.getVariablesForTask(flowElement.getId())); - return TestgeneratorDSLObjectCreator.createStartFlowElement(flowElement.getId(), inputVariables); - } else if (flowElement instanceof EndEvent) { - return TestgeneratorDSLObjectCreator.createEndFlowElement(flowElement.getId()); - } else if (flowElement instanceof Gateway) { - return TestgeneratorDSLObjectCreator.createGatewayFlowElement(flowElement.getId()); - } else if (flowElement instanceof UserTask) { - List<String> inputVariableNames = new ArrayList<>(); - inputVariableNames.addAll(bpmnIOParameters.getOutputVariables(flowElement.getId())); - inputVariableNames.addAll(formFields.getVariablesForTask(flowElement.getId())); - - List<Variable> inputVariables = filterFlowElementVariables(variables, inputVariableNames); - - return TestgeneratorDSLObjectCreator.createUserTaskFlowElement(flowElement.getId(), inputVariables); - } else if (flowElement instanceof ManualTask) { - return TestgeneratorDSLObjectCreator.createManualTaskFlowElement(flowElement.getId()); - } else if (flowElement instanceof ScriptTask) { - return TestgeneratorDSLObjectCreator.createScriptTaskFlowElement(flowElement.getId()); - } else if (flowElement instanceof BusinessRuleTask) { - return TestgeneratorDSLObjectCreator.createBusinessRuleTaskFlowElement(flowElement.getId()); - } else if (flowElement instanceof ServiceTask) { - String delegate = getDelegate((ServiceTask) flowElement); - String externalTopicTextual = getExternalTopic((ServiceTask) flowElement); - ExternalTopic externalTopic = getExternalTopic(externalTopics, externalTopicTextual); - - if (delegate != null) { - return TestgeneratorDSLObjectCreator.createDelegateServiceTaskFlowElement(flowElement.getId(), - delegate); - } else if (externalTopic != null) { - List<VariableDeclaration> hardcodedVariables = BPMNParseUtils.getHardcodedVariables(flowElement.getId(), variables, - bpmnIOParameters); - return TestgeneratorDSLObjectCreator.createExternalServiceTaskFlowElement(flowElement.getId(), - externalTopic, hardcodedVariables); - } else { - throw new IncompleteFlowElementException(flowElement.getId()); - } - } else if (flowElement instanceof SequenceFlow) { - String expression = expressions.getSequenceFlowExpressionMap().get(flowElement.getId()); - return TestgeneratorDSLObjectCreator.createSequenceFlowElement(flowElement.getId(), expression); - } - - throw new UnsupportedFlowElementException(flowElement.getId()); - } - - private List<Flow> getFlows(BPMNDiagram bpmn, BPMNFlowSet flowSet, List<FlowElement> flowElements) { - return flowSet.getFlows().stream() // - .map(flow -> createFlow(bpmn, flow, flowElements)) // - .collect(Collectors.toList()); // - } - - private Flow createFlow(BPMNDiagram bpmn, BPMNFlow flow, List<FlowElement> flowElements) { - List<String> flowNodes = flow.getFlowElementIds(); - - List<FlowElement> inclFlowElements = getInclFlowElements(flowElements, flowNodes); - List<FlowElement> exclFlowElements = getExclFlowElements(flowElements, flowNodes); - return TestgeneratorDSLObjectCreator.createFlow(flow.getName(), bpmn, inclFlowElements, exclFlowElements); - } - - private List<FlowElement> getInclFlowElements(List<FlowElement> flowElements, List<String> subset) { - return subset.stream() // - .map(flowElementName -> getFlowElementByName(flowElements, flowElementName)) // - .collect(Collectors.toList()); // - } - - private List<FlowElement> getExclFlowElements(List<FlowElement> flowElements, List<String> subset) { - return flowElements.stream() // - .filter(flowElement -> !subset.contains(flowElement.getName())) // - .collect(Collectors.toList()); // - } - - private List<Variable> filterFlowElementVariables(List<Variable> allVariables, - List<String> variablesForFlowElement) { - return allVariables.stream() // - .filter(variable -> variablesForFlowElement.contains(variable.getName())) // - .collect(Collectors.toList()); // - } - - @SuppressWarnings("unchecked") - private <T extends Object> List<T> getProposals(String variable, BPMNTestdata<? extends Object> variableTestdata, - Class<T> clazz) { - return variableTestdata.getValues().stream() // - .map(value -> ((T) value)) // - .collect(Collectors.toList()); // - } - - private List<Integer> getIntProposals(String variable, BPMNTestdata<? extends Object> variableTestdata) { - return variableTestdata.getValues().stream() // - .map(value -> ((Long) value).intValue()) // - .collect(Collectors.toList()); // - } - - private void checkTestIdAlreadyTaken(String testId, TestgeneratorDSLSerializer serializer) { - Test test = serializer.getTest(testId); - - if (test != null) { - throw new TestIdAlreadyTakenException(testId); - } - } - - private Test getTest(String testId, TestgeneratorDSLSerializer serializer) { - Test test = serializer.getTest(testId); - if (test == null) { - throw new TestNotFoundException(testId); - } - - return test; - } - - private FlowElement getFlowElementByName(List<FlowElement> flowElements, String name) { - return flowElements.stream() // - .filter(flowElement -> flowElement.getName().equals(name)) // - .findFirst() // - .get(); // always present - } - - private String getDelegate(ServiceTask serviceTask) { - String delegate = serviceTask.getAttributeValueNs(NAMESPACE_URI_BPMN, "delegateExpression"); - - if (delegate != null) { - delegate = delegate.substring(2, delegate.length() - 1); - } - - return delegate; - } - - private List<ExternalTopic> getExternalTopics(BPMNFlowSet flowSet) { - return flowSet.getFlowElements().stream() // - .filter(flowElement -> flowElement instanceof ServiceTask) // - .map(serviceTask -> ((ServiceTask) serviceTask)) // - .map(serviceTask -> getExternalTopic(serviceTask)) // - .filter(externalTopicName -> externalTopicName != null) // - .distinct() // - .map(externalTopicName -> TestgeneratorDSLObjectCreator.createExternalTopic(externalTopicName)) // - .collect(Collectors.toList()); // - } - - private String getExternalTopic(ServiceTask serviceTask) { - String externalTopic = serviceTask.getAttributeValueNs(NAMESPACE_URI_BPMN, "topic"); - return externalTopic; - } - - private ExternalTopic getExternalTopic(List<ExternalTopic> externalTopics, String externalTopicTextual) { - Optional<ExternalTopic> externalTopicOpt = externalTopics.stream() // - .filter(externalTopic -> externalTopic.getName().equals(externalTopicTextual)) // - .findFirst(); - - return externalTopicOpt.isPresent() ? externalTopicOpt.get() : null; - } - - - - private List<Loop> getLoops(List<de.fhmuenster.masterthesis.testgeneratorDSL.Loop> dslLoops) { - return dslLoops.stream() // - .map(dslLoop -> getLoop(dslLoop)) // - .collect(Collectors.toList()); // - } - - private Loop getLoop(de.fhmuenster.masterthesis.testgeneratorDSL.Loop dslLoop) { - Loop loop = new Loop(); - loop.setId(dslLoop.getName()); - loop.setEndId(dslLoop.getEnd()); - loop.setStartId(dslLoop.getStart()); - loop.setStartFollowerId(dslLoop.getFollower()); - loop.setComplexity(dslLoop.getComplexity()); - loop.setFrequencies(TestgeneratorDSLUtils.getFrequencies(dslLoop)); - - return loop; - } -} +package de.fhmuenster.masterthesis.Testgenerator.rest.service.test; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; + +import org.camunda.bpm.model.bpmn.instance.BusinessRuleTask; +import org.camunda.bpm.model.bpmn.instance.EndEvent; +import org.camunda.bpm.model.bpmn.instance.Gateway; +import org.camunda.bpm.model.bpmn.instance.ManualTask; +import org.camunda.bpm.model.bpmn.instance.ScriptTask; +import org.camunda.bpm.model.bpmn.instance.SequenceFlow; +import org.camunda.bpm.model.bpmn.instance.ServiceTask; +import org.camunda.bpm.model.bpmn.instance.StartEvent; +import org.camunda.bpm.model.bpmn.instance.UserTask; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNBundle; +import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNExpressions; +import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNFlow; +import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNFlowSet; +import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNFormFields; +import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNIOParameters; +import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNTestcase; +import de.fhmuenster.masterthesis.Testgenerator.bpmn.data.BPMNTestdata; +import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.BPMNExpressionScanner; +import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.BPMNFlowScanner; +import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.BPMNVariableBoundaryScanner; +import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.BPMNVariableFormFieldScanner; +import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.BPMNVariableIOScanner; +import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.loop.Loop; +import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.loop.LoopFrequencyAssigner; +import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.loop.LoopScanner; +import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.sese.IsElement; +import de.fhmuenster.masterthesis.Testgenerator.bpmn.processfragmentation.sese.SESEBuilder; +import de.fhmuenster.masterthesis.Testgenerator.dmn.data.DMNBundle; +import de.fhmuenster.masterthesis.Testgenerator.dmn.data.DMNDecisionModel; +import de.fhmuenster.masterthesis.Testgenerator.dmn.data.DMNVariables; +import de.fhmuenster.masterthesis.Testgenerator.embeddedform.data.EmbeddedFormDocument; +import de.fhmuenster.masterthesis.Testgenerator.logging.LoggerProvider; +import de.fhmuenster.masterthesis.Testgenerator.logging.TestgeneratorLogger; +import de.fhmuenster.masterthesis.Testgenerator.rest.service.converters.TestConverter; +import de.fhmuenster.masterthesis.Testgenerator.rest.service.flow.FlowService; +import de.fhmuenster.masterthesis.Testgenerator.rest.service.mock.MockService; +import de.fhmuenster.masterthesis.Testgenerator.rest.service.project.Project; +import de.fhmuenster.masterthesis.Testgenerator.rest.service.project.ProjectDirectories; +import de.fhmuenster.masterthesis.Testgenerator.utils.BPMNParseUtils; +import de.fhmuenster.masterthesis.Testgenerator.utils.ProjectDirectoryUtils; +import de.fhmuenster.masterthesis.serialization.TestgeneratorDSLObjectCreator; +import de.fhmuenster.masterthesis.serialization.TestgeneratorDSLSerializer; +import de.fhmuenster.masterthesis.serialization.VariableProposal; +import de.fhmuenster.masterthesis.testgeneratorDSL.BPMNDiagram; +import de.fhmuenster.masterthesis.testgeneratorDSL.ExternalTopic; +import de.fhmuenster.masterthesis.testgeneratorDSL.Flow; +import de.fhmuenster.masterthesis.testgeneratorDSL.FlowElement; +import de.fhmuenster.masterthesis.testgeneratorDSL.Mock; +import de.fhmuenster.masterthesis.testgeneratorDSL.Test; +import de.fhmuenster.masterthesis.testgeneratorDSL.Variable; +import de.fhmuenster.masterthesis.testgeneratorDSL.VariableDeclaration; +import de.fhmuenster.masterthesis.utils.TestgeneratorDSLUtils; + +@Service +public class TestService { + + private static final TestgeneratorLogger LOGGER = LoggerProvider.getLogger(TestService.class); + private static final String NAMESPACE_URI_BPMN = "http://camunda.org/schema/1.0/bpmn"; + + private long millisDataStart; + private long millisDataEnd; + + @Autowired + private FlowService flowService; + @Autowired + private MockService mockService; + + public TestService() { + } + + public List<de.fhmuenster.masterthesis.testgeneratorDSL.Loop> initLoops(Project project) { + Path testFilePath = ProjectDirectoryUtils.getTestspecificationPath(project.getProjectDirectories()); + String testpackage = project.getProjectDirectories().getTestPackage(); + List<de.fhmuenster.masterthesis.testgeneratorDSL.Loop> dslLoops = null; + + try { + TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testFilePath.toString()); + + BPMNDiagram bpmnDiagram = serializer.getBPMNDiagram("process"); + if (bpmnDiagram == null) { + BPMNBundle bpmnBundle = BPMNParseUtils.readBPMNBundle(project); + List<DMNBundle> dmnBundles = BPMNParseUtils.readDMNBundles(project); + List<EmbeddedFormDocument> embeddedFormDocuments = BPMNParseUtils.readEmbeddedFormDocuments(project); + List<DMNDecisionModel> decisionModels = BPMNParseUtils.getDecisionModels(dmnBundles); + bpmnDiagram = BPMNParseUtils.getBPMNDiagram(bpmnBundle.getProcessModel(), testpackage, decisionModels, + embeddedFormDocuments); + + // Build Single-Entry-Single-Exit-Graph + SESEBuilder seseBuilder = new SESEBuilder(bpmnBundle.getModelInstance()); + seseBuilder.buildSingleEntrySingleExit(); + List<IsElement> seseTransform = seseBuilder.getSeseTransform(); + + // Scan for loops + LoopScanner loopScanner = new LoopScanner(seseTransform); + List<Loop> loops = loopScanner.scanLoops(); + + // Set frequency for loops + LoopFrequencyAssigner frequencyAssigner = new LoopFrequencyAssigner(loops); + frequencyAssigner.assign(); + + serializer.addBPMNDiagram(bpmnDiagram); + dslLoops = flowService.getDSLLoops(loops); + dslLoops.forEach(dslLoop -> serializer.addLoop(dslLoop)); + + serializer.serialize(); + } + + } catch (IOException e) { + e.printStackTrace(); + } + + if (dslLoops == null) { + return flowService.getLoops(project.getProjectDirectories()); + } + + return dslLoops; + } + + public void initTestcollection(Project project) { + Path testFilePath = ProjectDirectoryUtils.getTestspecificationPath(project.getProjectDirectories()); + String testpackage = project.getProjectDirectories().getTestPackage(); + + try { + TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testFilePath.toString()); + + BPMNDiagram bpmnDiagram = serializer.getBPMNDiagram("process"); + List<FlowElement> flowElementsCheck = serializer.getFlowElements(); + + if (bpmnDiagram != null && flowElementsCheck.isEmpty()) { + BPMNBundle bpmnBundle = BPMNParseUtils.readBPMNBundle(project); + List<DMNBundle> dmnBundles = BPMNParseUtils.readDMNBundles(project); + List<EmbeddedFormDocument> embeddedFormDocuments = BPMNParseUtils.readEmbeddedFormDocuments(project); + List<DMNDecisionModel> decisionModels = BPMNParseUtils.getDecisionModels(dmnBundles); + + List<de.fhmuenster.masterthesis.testgeneratorDSL.Loop> dslLoops = serializer.getLoops(); + List<Loop> loops = getLoops(dslLoops); + + // Parse different flows of process model + BPMNFlowScanner scanner = new BPMNFlowScanner(bpmnBundle.getModelInstance(), loops); + BPMNFlowSet flowSet = scanner.scanFlows(); + + if (LOGGER.isInfo()) { + millisDataStart = System.currentTimeMillis(); + } + + // Read FormFields from Events and Tasks + BPMNVariableFormFieldScanner variableScanner = new BPMNVariableFormFieldScanner(flowSet); + EmbeddedFormDocument[] embeddedArray = new EmbeddedFormDocument[embeddedFormDocuments.size()]; + variableScanner.setEmbeddedFormDocuments(embeddedFormDocuments.toArray(embeddedArray)); + variableScanner.doScan(); + BPMNFormFields formFields = variableScanner.getFormFields(); + + // Read Input/Output-Parameters + BPMNVariableIOScanner variableIOScanner = new BPMNVariableIOScanner(flowSet); + variableIOScanner.doScan(); + BPMNIOParameters bpmnIOParameters = variableIOScanner.getBpmnIOParameters(); + + // Parse conditional expressions + BPMNExpressionScanner expressionScanner = new BPMNExpressionScanner(flowSet); + expressionScanner.doScan(); + BPMNExpressions expressions = expressionScanner.getExpressions(); + + List<DMNVariables> dmnVariableList = BPMNParseUtils.getDMNVariables(dmnBundles); + + BPMNVariableBoundaryScanner boundaryScanner = new BPMNVariableBoundaryScanner(expressions, formFields, + bpmnIOParameters, dmnVariableList); + boundaryScanner.doScan(); + HashMap<String, BPMNTestdata<?>> variableTestdata = boundaryScanner.getVariableTestdata(); + + List<Variable> variables = BPMNParseUtils.getVariables(formFields, variableTestdata, bpmnIOParameters); + + if (LOGGER.isInfo()) { + millisDataEnd = System.currentTimeMillis(); + LOGGER.info("Time needed for Data-Scan: " + (millisDataEnd - millisDataStart) + " ms"); + } + + List<ExternalTopic> externalTopics = getExternalTopics(flowSet); + List<FlowElement> flowElements = getFlowElements(flowSet, variables, formFields, expressions, + bpmnIOParameters, externalTopics); + List<Flow> flows = getFlows(bpmnDiagram, flowSet, flowElements); + + flowElements.forEach(flowElement -> serializer.addFlowElement(flowElement)); + variables.forEach(var -> serializer.addVariable(var)); + externalTopics.forEach(externalTopic -> serializer.addExternalTopic(externalTopic)); + flows.forEach(flow -> serializer.addFlow(flow)); + + serializer.serialize(); + } + + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void addTest(BPMNTestcase testcase, ProjectDirectories projectDirectories) { + Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories); + + try { + TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString()); + + checkTestIdAlreadyTaken(testcase.getName(), serializer); + + addTest(testcase, serializer, projectDirectories); + + serializer.serialize(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void updateTest(String testId, BPMNTestcase testcase, ProjectDirectories projectDirectories) { + Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories); + + try { + TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString()); + + if (!testId.equals(testcase.getName())) { + checkTestIdAlreadyTaken(testcase.getName(), serializer); + } + + Test testToDelete = getTest(testId, serializer); + serializer.deleteTest(testToDelete.getName()); + + addTest(testcase, serializer, projectDirectories); + + serializer.serialize(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void addTest(BPMNTestcase testcase, TestgeneratorDSLSerializer serializer, + ProjectDirectories projectDirectories) { + Flow flow = serializer.getFlow(testcase.getFlow()); + List<FlowElement> flowElements = serializer.getFlowElements(); + List<Variable> variables = serializer.getVariables(); + List<Mock> mocks = mockService.getMocks(testcase.getMocks(), projectDirectories); + Test newTest = TestConverter.getTest(testcase, flow, flowElements, variables, mocks); + + serializer.addTest(newTest); + } + + public List<VariableProposal<?>> getVariableProposals(ProjectDirectories projectDirectories) { + Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories); + + List<VariableProposal<?>> variableProposals = new ArrayList<>(); + try { + TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString()); + + variableProposals = serializer.getVariableProposals(); + } catch (IOException e) { + e.printStackTrace(); + } + + return variableProposals; + } + + public List<BPMNTestcase> getTests(ProjectDirectories projectDirectories, Flow flow) { + Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories); + + try { + TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString()); + + List<Test> testsForFlow = serializer.getTestsForFlow(flow); + List<BPMNTestcase> bpmnTestcases = new ArrayList<>(); + for (Test test : testsForFlow) { + bpmnTestcases.add(TestConverter.getBPMNTestcase(test)); + } + + return bpmnTestcases; + } catch (IOException e) { + // + } + + return null; + } + + public BPMNTestcase getTest(ProjectDirectories projectDirectories, String testId) { + Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories); + + try { + TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString()); + + Test test = getTest(testId, serializer); + + BPMNTestcase bpmnTestcase = TestConverter.getBPMNTestcase(test); + return bpmnTestcase; + } catch (IOException e) { + // + } + + return null; + } + + public void deleteTest(ProjectDirectories projectDirectories, String testId) { + Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories); + + try { + TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString()); + + serializer.deleteTest(testId); + + serializer.serialize(); + } catch (IOException e) { + // + } + } + + public List<FlowElement> getUserInputTasks(Flow flow) { + return TestgeneratorDSLUtils.getUserInputElements(flow); + } + + public Map<String, Long> getFlowTestcount(ProjectDirectories projectDirectories) { + Path testspecificationPath = ProjectDirectoryUtils.getTestspecificationPath(projectDirectories); + + try { + TestgeneratorDSLSerializer serializer = new TestgeneratorDSLSerializer(testspecificationPath.toString()); + Map<String, Long> flowTestCount = serializer.getFlowTestCount(); + + return flowTestCount; + } catch (IOException e) { + // + } + + return new HashMap<>(); + } + + private List<FlowElement> getFlowElements(BPMNFlowSet flowSet, List<Variable> variables, BPMNFormFields formFields, + BPMNExpressions expressions, BPMNIOParameters bpmnIOParameters, List<ExternalTopic> externalTopics) { + return flowSet.getFlowElements().stream() // + .map(flowElement -> getFlowElement(flowElement, variables, formFields, expressions, bpmnIOParameters, + externalTopics)) // + .collect(Collectors.toList()); // + } + + private FlowElement getFlowElement(org.camunda.bpm.model.bpmn.instance.FlowElement flowElement, + List<Variable> variables, BPMNFormFields formFields, BPMNExpressions expressions, + BPMNIOParameters bpmnIOParameters, List<ExternalTopic> externalTopics) { + + if (flowElement instanceof StartEvent) { + List<Variable> inputVariables = filterFlowElementVariables(variables, + formFields.getVariablesForTask(flowElement.getId())); + return TestgeneratorDSLObjectCreator.createStartFlowElement(flowElement.getId(), inputVariables); + } else if (flowElement instanceof EndEvent) { + return TestgeneratorDSLObjectCreator.createEndFlowElement(flowElement.getId()); + } else if (flowElement instanceof Gateway) { + return TestgeneratorDSLObjectCreator.createGatewayFlowElement(flowElement.getId()); + } else if (flowElement instanceof UserTask) { + List<String> inputVariableNames = new ArrayList<>(); + inputVariableNames.addAll(bpmnIOParameters.getOutputVariables(flowElement.getId())); + inputVariableNames.addAll(formFields.getVariablesForTask(flowElement.getId())); + + List<Variable> inputVariables = filterFlowElementVariables(variables, inputVariableNames); + + return TestgeneratorDSLObjectCreator.createUserTaskFlowElement(flowElement.getId(), inputVariables); + } else if (flowElement instanceof ManualTask) { + return TestgeneratorDSLObjectCreator.createManualTaskFlowElement(flowElement.getId()); + } else if (flowElement instanceof ScriptTask) { + return TestgeneratorDSLObjectCreator.createScriptTaskFlowElement(flowElement.getId()); + } else if (flowElement instanceof BusinessRuleTask) { + return TestgeneratorDSLObjectCreator.createBusinessRuleTaskFlowElement(flowElement.getId()); + } else if (flowElement instanceof ServiceTask) { + String delegate = getDelegate((ServiceTask) flowElement); + String externalTopicTextual = getExternalTopic((ServiceTask) flowElement); + ExternalTopic externalTopic = getExternalTopic(externalTopics, externalTopicTextual); + + if (delegate != null) { + return TestgeneratorDSLObjectCreator.createDelegateServiceTaskFlowElement(flowElement.getId(), + delegate); + } else if (externalTopic != null) { + List<VariableDeclaration> hardcodedVariables = BPMNParseUtils.getHardcodedVariables(flowElement.getId(), variables, + bpmnIOParameters); + return TestgeneratorDSLObjectCreator.createExternalServiceTaskFlowElement(flowElement.getId(), + externalTopic, hardcodedVariables); + } else { + throw new IncompleteFlowElementException(flowElement.getId()); + } + } else if (flowElement instanceof SequenceFlow) { + String expression = expressions.getSequenceFlowExpressionMap().get(flowElement.getId()); + return TestgeneratorDSLObjectCreator.createSequenceFlowElement(flowElement.getId(), expression); + } + + throw new UnsupportedFlowElementException(flowElement.getId()); + } + + private List<Flow> getFlows(BPMNDiagram bpmn, BPMNFlowSet flowSet, List<FlowElement> flowElements) { + return flowSet.getFlows().stream() // + .map(flow -> createFlow(bpmn, flow, flowElements)) // + .collect(Collectors.toList()); // + } + + private Flow createFlow(BPMNDiagram bpmn, BPMNFlow flow, List<FlowElement> flowElements) { + List<String> flowNodes = flow.getFlowElementIds(); + + List<FlowElement> inclFlowElements = getInclFlowElements(flowElements, flowNodes); + List<FlowElement> exclFlowElements = getExclFlowElements(flowElements, flowNodes); + return TestgeneratorDSLObjectCreator.createFlow(flow.getName(), bpmn, inclFlowElements, exclFlowElements); + } + + private List<FlowElement> getInclFlowElements(List<FlowElement> flowElements, List<String> subset) { + return subset.stream() // + .map(flowElementName -> getFlowElementByName(flowElements, flowElementName)) // + .collect(Collectors.toList()); // + } + + private List<FlowElement> getExclFlowElements(List<FlowElement> flowElements, List<String> subset) { + return flowElements.stream() // + .filter(flowElement -> !subset.contains(flowElement.getName())) // + .collect(Collectors.toList()); // + } + + private List<Variable> filterFlowElementVariables(List<Variable> allVariables, + List<String> variablesForFlowElement) { + return allVariables.stream() // + .filter(variable -> variablesForFlowElement.contains(variable.getName())) // + .collect(Collectors.toList()); // + } + + @SuppressWarnings("unchecked") + private <T extends Object> List<T> getProposals(String variable, BPMNTestdata<? extends Object> variableTestdata, + Class<T> clazz) { + return variableTestdata.getValues().stream() // + .map(value -> ((T) value)) // + .collect(Collectors.toList()); // + } + + private List<Integer> getIntProposals(String variable, BPMNTestdata<? extends Object> variableTestdata) { + return variableTestdata.getValues().stream() // + .map(value -> ((Long) value).intValue()) // + .collect(Collectors.toList()); // + } + + private void checkTestIdAlreadyTaken(String testId, TestgeneratorDSLSerializer serializer) { + Test test = serializer.getTest(testId); + + if (test != null) { + throw new TestIdAlreadyTakenException(testId); + } + } + + private Test getTest(String testId, TestgeneratorDSLSerializer serializer) { + Test test = serializer.getTest(testId); + if (test == null) { + throw new TestNotFoundException(testId); + } + + return test; + } + + private FlowElement getFlowElementByName(List<FlowElement> flowElements, String name) { + return flowElements.stream() // + .filter(flowElement -> flowElement.getName().equals(name)) // + .findFirst() // + .get(); // always present + } + + private String getDelegate(ServiceTask serviceTask) { + String delegate = serviceTask.getAttributeValueNs(NAMESPACE_URI_BPMN, "delegateExpression"); + + if (delegate != null) { + delegate = delegate.substring(2, delegate.length() - 1); + } + + return delegate; + } + + private List<ExternalTopic> getExternalTopics(BPMNFlowSet flowSet) { + return flowSet.getFlowElements().stream() // + .filter(flowElement -> flowElement instanceof ServiceTask) // + .map(serviceTask -> ((ServiceTask) serviceTask)) // + .map(serviceTask -> getExternalTopic(serviceTask)) // + .filter(externalTopicName -> externalTopicName != null) // + .distinct() // + .map(externalTopicName -> TestgeneratorDSLObjectCreator.createExternalTopic(externalTopicName)) // + .collect(Collectors.toList()); // + } + + private String getExternalTopic(ServiceTask serviceTask) { + String externalTopic = serviceTask.getAttributeValueNs(NAMESPACE_URI_BPMN, "topic"); + return externalTopic; + } + + private ExternalTopic getExternalTopic(List<ExternalTopic> externalTopics, String externalTopicTextual) { + Optional<ExternalTopic> externalTopicOpt = externalTopics.stream() // + .filter(externalTopic -> externalTopic.getName().equals(externalTopicTextual)) // + .findFirst(); + + return externalTopicOpt.isPresent() ? externalTopicOpt.get() : null; + } + + + + private List<Loop> getLoops(List<de.fhmuenster.masterthesis.testgeneratorDSL.Loop> dslLoops) { + return dslLoops.stream() // + .map(dslLoop -> getLoop(dslLoop)) // + .collect(Collectors.toList()); // + } + + private Loop getLoop(de.fhmuenster.masterthesis.testgeneratorDSL.Loop dslLoop) { + Loop loop = new Loop(); + loop.setId(dslLoop.getName()); + loop.setEndId(dslLoop.getEnd()); + loop.setStartId(dslLoop.getStart()); + loop.setStartFollowerId(dslLoop.getFollower()); + loop.setComplexity(dslLoop.getComplexity()); + loop.setFrequencies(TestgeneratorDSLUtils.getFrequencies(dslLoop)); + + return loop; + } +} diff --git a/testgenerator-web/testgenerator-web/src/app/components/test/test.component.css b/testgenerator-web/testgenerator-web/src/app/components/test/test.component.css index f74d5f5..4c468e7 100644 --- a/testgenerator-web/testgenerator-web/src/app/components/test/test.component.css +++ b/testgenerator-web/testgenerator-web/src/app/components/test/test.component.css @@ -1,35 +1,39 @@ -.testgen-taskvariable-container { - margin-top: 2rem; - margin-bottom: 2rem; -} - -.testgen-testtask { - border: 2px solid #4b515d; - margin-bottom: 1rem; - padding: 1rem; - border-radius: 25px; -} - -.testgen-form-radio { - margin-top: 1.5rem; - margin-bottom: 2rem -} - -.testgen-endcheck-container { - margin-top: 2rem; - margin-bottom: 2rem; -} - -.testgen-endcheck { - border: 2px solid #4b515d; - margin-bottom: 1rem; - padding: 1rem; - border-radius: 25px; -} - -.testgen-mock-container { - border: 2px solid #4b515d; - margin-bottom: 1rem; - padding: 1rem; - border-radius: 25px; +.testgen-taskvariable-container { + margin-top: 2rem; + margin-bottom: 2rem; +} + +.testgen-testtask { + border: 2px solid #4b515d; + margin-bottom: 1rem; + padding: 1rem; + border-radius: 25px; +} + +.testgen-form-radio { + margin-top: 1.5rem; + margin-bottom: 2rem +} + +.testgen-endcheck-container { + margin-top: 2rem; + margin-bottom: 2rem; +} + +.testgen-endcheck { + border: 2px solid #4b515d; + margin-bottom: 1rem; + padding: 1rem; + border-radius: 25px; +} + +.testgen-mock-container { + border: 2px solid #4b515d; + margin-bottom: 1rem; + padding: 1rem; + border-radius: 25px; +} + +.testPrioTitle { + line-height: 28px; } \ No newline at end of file diff --git a/testgenerator-web/testgenerator-web/src/app/components/test/test.component.html b/testgenerator-web/testgenerator-web/src/app/components/test/test.component.html index 062b56e..09b217d 100644 --- a/testgenerator-web/testgenerator-web/src/app/components/test/test.component.html +++ b/testgenerator-web/testgenerator-web/src/app/components/test/test.component.html @@ -1,152 +1,159 @@ -<div class="container"> - <div class="row row mt-5"> - - <div class="col" *ngIf="!isLoading && !isTestLoading && testcase"> - <h2 class="testgen-headline-message" *ngIf="isEdit" i18n="edit test">Edit test</h2> - <h2 class="testgen-headline-message" *ngIf="!isEdit" i18n="create test">Create test</h2> - - <form [formGroup]="formGroup"> - <div class="md-form form-group"> - <input mdbInput mdbValidate type="text" class="form-control" id="name" formControlName="name"> - <label for="name" i18n="testcase name" i18n="test name">Testcase name</label> - <p class="text-danger" *ngIf="formGroup.get('name').touched && formGroup.get('name').hasError('required')" i18n="test name required">Testcase name is required.</p> - <p class="text-danger" *ngIf="formGroup.get('name').hasError('testIdTaken')" i18n="test name taken">Testcase name is already taken.</p> - </div> - - <div [formGroupName]="'mocks'" class="testgen-mock-container"> - <h3 i18n="mock header">Mocks</h3> - <div *ngFor="let delegateService of flowInfo.delegateServices; let i=index"> - <div class="form-row"> - <div class="col-md-6"> - <label for="{{delegateService.serviceName}}" i18n="mock for service">Mock for {{delegateService.serviceName}}</label> - <select class="browser-default custom-select" formControlName="{{delegateService.serviceName}}"> - <option *ngFor="let mockName of mocks.get(delegateService.serviceName); let mockIndex=index" value="{{mockName}}">{{mockName}}</option> - </select> - </div> - </div> - </div> - - <div *ngFor="let externalTopic of flowInfo.externalTopics; let i=index"> - <div class="form-row"> - <div class="col-md-6"> - <label for="{{externalTopic.externalTopicName}}" i18n="mock for topic">Mock for {{externalTopic.externalTopicName}}</label> - <select class="browser-default custom-select" formControlName="{{externalTopic.externalTopicName}}"> - <option *ngFor="let mockName of mocks.get(externalTopic.externalTopicName); let mockIndex=index" value="{{mockName}}">{{mockName}}</option> - </select> - </div> - </div> - </div> - - <div *ngIf="flowInfo.delegateServices.length == 0 && flowInfo.externalTopics.length == 0"> - <p i18n="no mocks created">No service tasks were detected for which mocks were already created.</p> - </div> - </div> - - <div formArrayName="taskVariableList"> - <div class="testgen-taskvariable-container" *ngFor="let taskVariable of testcase.taskVariableList; let i=index"> - <hr *ngIf="i > 0"> - <div class="testgen-testtask" [formGroupName]="i"> - <h3>{{taskVariable.task}}</h3> - - <div *ngFor="let variableValue of taskVariable.variableValues; let v=index"> - <!--String and Integer Fields--> - <div class="md-form form-group" *ngIf="(dataTypes.get(variableValue.variable) == 'java.lang.Integer') || dataTypes.get(variableValue.variable) == 'java.lang.String'"> - <input mdbInput mdbValidate type="number" class="form-control" id="{{variableValue.variable}}-{{i}}-{{v}}" - formControlName="{{variableValue.variable}}" *ngIf="dataTypes.get(variableValue.variable) == 'java.lang.Integer'"> - <input mdbInput mdbValidate type="text" class="form-control" id="{{variableValue.variable}}-{{i}}-{{v}}" - formControlName="{{variableValue.variable}}" *ngIf="dataTypes.get(variableValue.variable) == 'java.lang.String'"> - <label for="{{variableValue.variable}}-{{i}}-{{v}}">{{variableValue.variable}}</label> - <p *ngIf="getVariableProposals(variableValue.variable).proposals.length > 0" i18n="proposals">Proposals : [{{getVariableProposals(variableValue.variable) | variableProposals}}]</p> - <p *ngIf="getVariableProposals(variableValue.variable).proposals.length == 0" i18n="no proposals">No proposals</p> - </div> - - <!--Boolean Checkboxes--> - <div class="testgen-form-radio" *ngIf="dataTypes.get(variableValue.variable) == 'java.lang.Boolean'"> - <label for="{{variableValue.variable}}-{{i}}-{{v}}">{{variableValue.variable}}</label> - <div class="custom-control custom-radio"> - <input type="radio" class="custom-control-input" id="{{variableValue.variable}}Yes-{{i}}-{{v}}" - value="true" formControlName="{{variableValue.variable}}" mdbInput> - <label class="custom-control-label" for="{{variableValue.variable}}Yes-{{i}}-{{v}}">true</label> - </div> - - <div class="custom-control custom-radio"> - <input type="radio" class="custom-control-input" id="{{variableValue.variable}}No-{{i}}-{{v}}" - value="false" formControlName="{{variableValue.variable}}" mdbInput> - <label class="custom-control-label" for="{{variableValue.variable}}No-{{i}}-{{v}}">false</label> - </div> - - <div class="custom-control custom-radio"> - <input type="radio" class="custom-control-input" id="{{variableValue.variable}}Null-{{i}}-{{v}}" - value="null" formControlName="{{variableValue.variable}}" mdbInput> - <label class="custom-control-label" for="{{variableValue.variable}}Null-{{i}}-{{v}}">null</label> - </div> - </div> - </div> - </div> - </div> - </div> - - <hr> - - <div> - <div class="testgen-endcheck-container"> - <div class="testgen-endcheck"> - <h3 i18n="end check">Target-Actual-Comparison of the variables</h3> - - <div formGroupName="endChecks"> - <div *ngFor="let variableValue of testcase.endChecks; let i=index"> - - <!--String and Integer Fields--> - <div class="md-form form-group" *ngIf="(dataTypes.get(variableValue.variable) == 'java.lang.Integer') || dataTypes.get(variableValue.variable) == 'java.lang.String'"> - <input mdbInput mdbValidate type="number" class="form-control" id="{{variableValue.variable}}" - formControlName="{{variableValue.variable}}" *ngIf="dataTypes.get(variableValue.variable) == 'java.lang.Integer'"> - <input mdbInput mdbValidate type="text" class="form-control" id="{{variableValue.variable}}" - formControlName="{{variableValue.variable}}" *ngIf="dataTypes.get(variableValue.variable) == 'java.lang.String'"> - <label for="{{variableValue.variable}}">{{variableValue.variable}}</label> - </div> - - <!--Boolean Checkboxes--> - <div class="testgen-form-radio" *ngIf="dataTypes.get(variableValue.variable) == 'java.lang.Boolean'"> - <label for="{{variableValue.variable}}">{{variableValue.variable}}</label> - <div class="custom-control custom-radio"> - <input type="radio" class="custom-control-input" id="{{variableValue.variable}}YesEndCheck" - value="true" formControlName="{{variableValue.variable}}" mdbInput> - <label class="custom-control-label" for="{{variableValue.variable}}YesEndCheck">true</label> - </div> - - <div class="custom-control custom-radio"> - <input type="radio" class="custom-control-input" id="{{variableValue.variable}}NoEndCheck" - value="false" formControlName="{{variableValue.variable}}" mdbInput> - <label class="custom-control-label" for="{{variableValue.variable}}NoEndCheck">false</label> - </div> - - <div class="custom-control custom-radio"> - <input type="radio" class="custom-control-input" id="{{variableValue.variable}}NullEndCheck" - value="null" formControlName="{{variableValue.variable}}" mdbInput> - <label class="custom-control-label" for="{{variableValue.variable}}NullEndCheck">null</label> - </div> - </div> - - <select class="browser-default custom-select" formControlName="{{variableValue.variable}}Compare"> - <option value="==" [attr.selected]="variableValue.compareOperator == '==' ? 'selected' : null" i18n="equals">Equals</option> - <option value="!=" [attr.selected]="variableValue.compareOperator == '!=' ? 'selected' : null" i18n="not equals">Not equals</option> - </select> - - </div> - </div> - </div> - </div> - </div> - </form> - <div class="testgen-actionbar testgen-actionbar-right"> - <a class="btn btn-md waves-effect waves-light testgen-danger testgen-btn-rounded" [routerLink]="['../']" - *ngIf="!isEdit" i18n="cancel">Cancel</a> - <a class="btn btn-md waves-effect waves-light testgen-danger testgen-btn-rounded" [routerLink]="['../../']" - *ngIf="isEdit" i18n="cancel">Cancel</a> - <a class="btn btn-md waves-effect waves-light testgen-primary testgen-btn-rounded" (click)="save()" i18n="save testcase">Save testcase</a> - </div> - </div> - </div> -</div> - +<div class="container"> + <div class="row row mt-5"> + + <div class="col" *ngIf="!isLoading && !isTestLoading && testcase"> + <h2 class="testgen-headline-message" *ngIf="isEdit" i18n="edit test">Edit test</h2> + <h2 class="testgen-headline-message" *ngIf="!isEdit" i18n="create test">Create test</h2> + + <form [formGroup]="formGroup"> + <div class="md-form form-group"> + <div class="col"> + <input mdbInput mdbValidate type="text" class="form-control" id="name" formControlName="name"> + <label for="name" i18n="testcase name" i18n="test name">Testcase name</label> + <p class="text-danger" *ngIf="formGroup.get('name').touched && formGroup.get('name').hasError('required')" i18n="test name required">Testcase name is required.</p> + <p class="text-danger" *ngIf="formGroup.get('name').hasError('testIdTaken')" i18n="test name taken">Testcase name is already taken.</p> + </div> + <br> + <div class="col"> + <label for="priority" i18n="testcase priority">Test priority</label> + <input mdbInput type="number" class="form-control" id="priority" value="{{testcase.priority}}"> + </div> + </div> + + <div [formGroupName]="'mocks'" class="testgen-mock-container"> + <h3 i18n="mock header">Mocks</h3> + <div *ngFor="let delegateService of flowInfo.delegateServices; let i=index"> + <div class="form-row"> + <div class="col-md-6"> + <label for="{{delegateService.serviceName}}" i18n="mock for service">Mock for {{delegateService.serviceName}}</label> + <select class="browser-default custom-select" formControlName="{{delegateService.serviceName}}"> + <option *ngFor="let mockName of mocks.get(delegateService.serviceName); let mockIndex=index" value="{{mockName}}">{{mockName}}</option> + </select> + </div> + </div> + </div> + + <div *ngFor="let externalTopic of flowInfo.externalTopics; let i=index"> + <div class="form-row"> + <div class="col-md-6"> + <label for="{{externalTopic.externalTopicName}}" i18n="mock for topic">Mock for {{externalTopic.externalTopicName}}</label> + <select class="browser-default custom-select" formControlName="{{externalTopic.externalTopicName}}"> + <option *ngFor="let mockName of mocks.get(externalTopic.externalTopicName); let mockIndex=index" value="{{mockName}}">{{mockName}}</option> + </select> + </div> + </div> + </div> + + <div *ngIf="flowInfo.delegateServices.length == 0 && flowInfo.externalTopics.length == 0"> + <p i18n="no mocks created">No service tasks were detected for which mocks were already created.</p> + </div> + </div> + + <div formArrayName="taskVariableList"> + <div class="testgen-taskvariable-container" *ngFor="let taskVariable of testcase.taskVariableList; let i=index"> + <hr *ngIf="i > 0"> + <div class="testgen-testtask" [formGroupName]="i"> + <h3>{{taskVariable.task}}</h3> + + <div *ngFor="let variableValue of taskVariable.variableValues; let v=index"> + <!--String and Integer Fields--> + <div class="md-form form-group" *ngIf="(dataTypes.get(variableValue.variable) == 'java.lang.Integer') || dataTypes.get(variableValue.variable) == 'java.lang.String'"> + <input mdbInput mdbValidate type="number" class="form-control" id="{{variableValue.variable}}-{{i}}-{{v}}" + formControlName="{{variableValue.variable}}" *ngIf="dataTypes.get(variableValue.variable) == 'java.lang.Integer'"> + <input mdbInput mdbValidate type="text" class="form-control" id="{{variableValue.variable}}-{{i}}-{{v}}" + formControlName="{{variableValue.variable}}" *ngIf="dataTypes.get(variableValue.variable) == 'java.lang.String'"> + <label for="{{variableValue.variable}}-{{i}}-{{v}}">{{variableValue.variable}}</label> + <p *ngIf="getVariableProposals(variableValue.variable).proposals.length > 0" i18n="proposals">Proposals : [{{getVariableProposals(variableValue.variable) | variableProposals}}]</p> + <p *ngIf="getVariableProposals(variableValue.variable).proposals.length == 0" i18n="no proposals">No proposals</p> + </div> + + <!--Boolean Checkboxes--> + <div class="testgen-form-radio" *ngIf="dataTypes.get(variableValue.variable) == 'java.lang.Boolean'"> + <label for="{{variableValue.variable}}-{{i}}-{{v}}">{{variableValue.variable}}</label> + <div class="custom-control custom-radio"> + <input type="radio" class="custom-control-input" id="{{variableValue.variable}}Yes-{{i}}-{{v}}" + value="true" formControlName="{{variableValue.variable}}" mdbInput> + <label class="custom-control-label" for="{{variableValue.variable}}Yes-{{i}}-{{v}}">true</label> + </div> + + <div class="custom-control custom-radio"> + <input type="radio" class="custom-control-input" id="{{variableValue.variable}}No-{{i}}-{{v}}" + value="false" formControlName="{{variableValue.variable}}" mdbInput> + <label class="custom-control-label" for="{{variableValue.variable}}No-{{i}}-{{v}}">false</label> + </div> + + <div class="custom-control custom-radio"> + <input type="radio" class="custom-control-input" id="{{variableValue.variable}}Null-{{i}}-{{v}}" + value="null" formControlName="{{variableValue.variable}}" mdbInput> + <label class="custom-control-label" for="{{variableValue.variable}}Null-{{i}}-{{v}}">null</label> + </div> + </div> + </div> + </div> + </div> + </div> + + <hr> + + <div> + <div class="testgen-endcheck-container"> + <div class="testgen-endcheck"> + <h3 i18n="end check">Target-Actual-Comparison of the variables</h3> + + <div formGroupName="endChecks"> + <div *ngFor="let variableValue of testcase.endChecks; let i=index"> + + <!--String and Integer Fields--> + <div class="md-form form-group" *ngIf="(dataTypes.get(variableValue.variable) == 'java.lang.Integer') || dataTypes.get(variableValue.variable) == 'java.lang.String'"> + <input mdbInput mdbValidate type="number" class="form-control" id="{{variableValue.variable}}" + formControlName="{{variableValue.variable}}" *ngIf="dataTypes.get(variableValue.variable) == 'java.lang.Integer'"> + <input mdbInput mdbValidate type="text" class="form-control" id="{{variableValue.variable}}" + formControlName="{{variableValue.variable}}" *ngIf="dataTypes.get(variableValue.variable) == 'java.lang.String'"> + <label for="{{variableValue.variable}}">{{variableValue.variable}}</label> + </div> + + <!--Boolean Checkboxes--> + <div class="testgen-form-radio" *ngIf="dataTypes.get(variableValue.variable) == 'java.lang.Boolean'"> + <label for="{{variableValue.variable}}">{{variableValue.variable}}</label> + <div class="custom-control custom-radio"> + <input type="radio" class="custom-control-input" id="{{variableValue.variable}}YesEndCheck" + value="true" formControlName="{{variableValue.variable}}" mdbInput> + <label class="custom-control-label" for="{{variableValue.variable}}YesEndCheck">true</label> + </div> + + <div class="custom-control custom-radio"> + <input type="radio" class="custom-control-input" id="{{variableValue.variable}}NoEndCheck" + value="false" formControlName="{{variableValue.variable}}" mdbInput> + <label class="custom-control-label" for="{{variableValue.variable}}NoEndCheck">false</label> + </div> + + <div class="custom-control custom-radio"> + <input type="radio" class="custom-control-input" id="{{variableValue.variable}}NullEndCheck" + value="null" formControlName="{{variableValue.variable}}" mdbInput> + <label class="custom-control-label" for="{{variableValue.variable}}NullEndCheck">null</label> + </div> + </div> + + <select class="browser-default custom-select" formControlName="{{variableValue.variable}}Compare"> + <option value="==" [attr.selected]="variableValue.compareOperator == '==' ? 'selected' : null" i18n="equals">Equals</option> + <option value="!=" [attr.selected]="variableValue.compareOperator == '!=' ? 'selected' : null" i18n="not equals">Not equals</option> + </select> + + </div> + </div> + </div> + </div> + </div> + </form> + <div class="testgen-actionbar testgen-actionbar-right"> + <a class="btn btn-md waves-effect waves-light testgen-danger testgen-btn-rounded" [routerLink]="['../']" + *ngIf="!isEdit" i18n="cancel">Cancel</a> + <a class="btn btn-md waves-effect waves-light testgen-danger testgen-btn-rounded" [routerLink]="['../../']" + *ngIf="isEdit" i18n="cancel">Cancel</a> + <a class="btn btn-md waves-effect waves-light testgen-primary testgen-btn-rounded" (click)="save()" i18n="save testcase">Save testcase</a> + </div> + </div> + </div> +</div> + <app-loading *ngIf="isLoading"></app-loading> \ No newline at end of file -- GitLab