martinweiler commented on code in PR #6849:
URL: https://github.com/apache/incubator-kie/pull/6849#discussion_r3815796591


##########
kogito-jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/StandaloneBPMNProcessTest.java:
##########
@@ -453,36 +453,26 @@ public void testEventBasedSplit4() {
     }
 
     @Test
-    public void testEventBasedSplit5() throws Exception {
-        kruntime = 
createKogitoProcessRuntime("org/jbpm/bpmn2/intermediate/BPMN2-EventBasedSplit5.bpmn2");
-
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email1", 
new SystemOutWorkItemHandler());
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email2", 
new SystemOutWorkItemHandler());
-        ReceiveTaskHandler receiveTaskHandler = new ReceiveTaskHandler();
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Receive 
Task", receiveTaskHandler);
+    public void testEventBasedSplit5() {
+        Application app = ProcessTestHelper.newApplication();
+        ProcessTestHelper.registerHandler(app, "Email1", new 
SystemOutWorkItemHandler());
+        ProcessTestHelper.registerHandler(app, "Email2", new 
SystemOutWorkItemHandler());
+        ProcessTestHelper.registerHandler(app, "Receive Task", new 
ReceiveTaskHandler());
+        
org.kie.kogito.process.Process<org.jbpm.bpmn2.intermediate.EventBasedSplit5Model>
 processDefinition =
+                
org.jbpm.bpmn2.intermediate.EventBasedSplit5Process.newProcess(app);
         // Yes
-        KogitoProcessInstance processInstance = 
kruntime.startProcess("EventBasedSplit5");
-        
assertThat(processInstance.getState()).isEqualTo(KogitoProcessInstance.STATE_ACTIVE);
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email1", 
new SystemOutWorkItemHandler());
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email2", 
new SystemOutWorkItemHandler());
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Receive 
Task", receiveTaskHandler);
-
-        receiveTaskHandler.getWorkItemId().stream().findFirst().ifPresent(id 
-> kruntime.getKogitoWorkItemManager().completeWorkItem(id, Map.of("Message", 
"YesValue")));
-
-        assertProcessInstanceCompleted(processInstance.getStringId(), 
kruntime);
-
-        receiveTaskHandler.getWorkItemId().forEach(id -> 
kruntime.getKogitoWorkItemManager().completeWorkItem(id, Map.of("Message", 
"NoValue")));
-
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email1", 
new SystemOutWorkItemHandler());
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Email2", 
new SystemOutWorkItemHandler());
-        kruntime.getKogitoWorkItemManager().registerWorkItemHandler("Receive 
Task", receiveTaskHandler);
+        ProcessInstance<org.jbpm.bpmn2.intermediate.EventBasedSplit5Model> 
processInstance =
+                
processDefinition.createInstance(processDefinition.createModel());
+        processInstance.start();
+        
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
+        ProcessTestHelper.completeWorkItem(processInstance, Map.of("Message", 
"YesValue"));
+        
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_COMPLETED);
         // No
-        processInstance = kruntime.startProcess("EventBasedSplit5");
-        receiveTaskHandler.getWorkItemId().stream().findFirst().ifPresent(id 
-> kruntime.getKogitoWorkItemManager().completeWorkItem(id, Map.of("Message", 
"NoValue")));
-
-        assertProcessInstanceCompleted(processInstance.getStringId(), 
kruntime);
-
-        receiveTaskHandler.getWorkItemId().stream().findFirst().ifPresent(id 
-> kruntime.getKogitoWorkItemManager().completeWorkItem(id, Map.of("Message", 
"YesValue")));
+        processInstance = 
processDefinition.createInstance(processDefinition.createModel());
+        processInstance.start();
+        
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
+        ProcessTestHelper.completeWorkItem(processInstance, Map.of("Message", 
"NoValue"));

Review Comment:
   The ProcessTestHelper.completeWorkItem(..) method finishes the first 
workItem. Since we have both the Yes and the No workItems after creating the 
process instance, we need to explicitly filter for the No workItem in order to 
complete the correct one. 
   
   Without it, the test output shows that the process is not executed as 
expected:
   
   ```
   [INFO] Running org.jbpm.bpmn2.StandaloneBPMNProcessTest
   Executing work item WorkItem 982b7711-468d-4593-8fcc-37251acfb913 
[name=Email1, state=1, processInstanceId=8e3c51ee-c21f-471e-b8db-2815559ce3e1, 
parameters{NodeName=Email1, UNIQUE_TASK_ID=_11}]
   Executing Yes
   x=YesValue
   Executing work item WorkItem bbded1d0-0e7c-4088-9a4f-091fbb08940d 
[name=Email2, state=1, processInstanceId=8e3c51ee-c21f-471e-b8db-2815559ce3e1, 
parameters{NodeName=Email2, UNIQUE_TASK_ID=_7}]
   Executing work item WorkItem 46a6c9e2-8923-4fd4-ad4a-0cc17dbaabc6 
[name=Email1, state=1, processInstanceId=b54f0efc-c17e-4439-9232-ae95f07d9120, 
parameters{NodeName=Email1, UNIQUE_TASK_ID=_11}]
   Executing Yes
   x=NoValue
   Executing work item WorkItem fd05a1a2-52c1-4995-a715-d4fccd00482b 
[name=Email2, state=1, processInstanceId=b54f0efc-c17e-4439-9232-ae95f07d9120, 
parameters{NodeName=Email2, UNIQUE_TASK_ID=_7}]
   ```
   
   The `Executing Yes`, `x=NoValue` sequence indicates that the test is wrong 
(although it doesn't fail).
   
   I'd suggest to change it to something like this (for both the Yes and the No 
calls):
   ```
   -        ProcessTestHelper.completeWorkItem(processInstance, 
Map.of("Message", "YesValue"));
   +        assertThat(processInstance.variables().getX()).isNull();
   +        processInstance.workItems().stream()
   +                .filter(wi -> "Yes".equals(wi.getName()))
   +                .findFirst()
   +                .ifPresent(wi -> 
processInstance.completeWorkItem(wi.getId(), Map.of("Message", "YesValue")));
            
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_COMPLETED);
   +        
assertThat(processInstance.variables().getX()).isEqualTo("YesValue");
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to