Hello @Michal_Stefaniuk emphasized text,
Thanks for replying, this is my delegate
@Component
@RequiredArgsConstructor
public class CreateRequestExecutionListener implements ExecutionListener {
private final DataRequestRepository dataRequestRepository;
@Override
public void notify(DelegateExecution delegateExecution) throws Exception {
var dataRequest = new DataRequest();
dataRequest.setRequestId(delegateExecution.getBusinessKey());
dataRequestRepository.save(dataRequest);
}
}
The delegate is called like this
and my test class
@Deployment(resources = {“bpmn/DetermineFunctionCode.dmn”, “bpmn/Intervention.bpmn”
, “bpmn/UpdateInstructionStatus.bpmn”, “bpmn/rrsp_withdrawal.bpmn”
})
public class RRSPWithdrawalProcessScenarioTest {
private static final String PROCESS_DEFINITION_KEY = "rrsp_withdrawal";
private static final String NBDB_DEALER_CODE = "D07";
private static final String NBF_DEALER_CODE = "B41";
private static final String MOSTV_NBIN_DEALER_CODE = "L52";
private static final String OTHER_NBIN_DEALER_CODE = "L65";
private static final String NBF_PARTNER_ID = "NBF";
private static final String NBIN_PARTNER_ID = "NBIN";
private static final String NBDB_PARTNER_ID = "NBDB";
@Mock
private ProcessScenario rrspWithdrawalProcessScenario;
@Mock
private ProcessScenario updateInstructionStatusProcessScenario;
@Mock
private ProcessScenario updatePendingReviewStatusProcessScenario;
@Mock
private ProcessScenario interventionProcessScenario;
@Mock
private ProcessScenario manualInputProcessScenario;
@Mock
private ProcessScenario manualInputUpdateInstructionStatusProcessScenario;
@Mock
private ProcessScenario updateRejectedStatusProcessScenario;
@Mock
private CreateRequestExecutionListener createRequestExecutionListener;
@Rule
@ClassRule
public static ProcessEngineRule rule = TestCoverageProcessEngineRuleBuilder.create().build();
private Map<String, Object> variables;
private Scenario scenario;
@Test
public void testApprovalCreditNBDBManagerInt() {
validateIntervetionBehavior(“isAppCrNBDBM”,
NBDB_DEALER_CODE,
“INUCHKDC”,
“Cheque request - NBDB Manager”,
“Chèque - Directeur CDBN”,
“CHK_REQ_DIR_SEC”);
}
private void validateIntervetionBehavior(String interventionFlagName,
Object interventionFlagValue,
String dealerCode,
String candidateGroupName,
long grossAmount,
String interventionDescrEn,
String interventionDescrFr,
String interventionRefName){
variables.put(interventionFlagName, interventionFlagValue);
variables.put("dealerCode", dealerCode);
variables.put("isTransmission", false);
variables.put("grossAmount", grossAmount);
when(interventionProcessScenario.waitsAtUserTask("Task_Intervention")).thenReturn((task) -> {
assertThat(task).hasCandidateGroup(candidateGroupName);
task.complete(withVariables("taskStatusCode", "04"));
});
scenario = Scenario.run(rrspWithdrawalProcessScenario)
.withMockedProcess("transmissionProcess")
.startByKey(PROCESS_DEFINITION_KEY, variables)
.execute();
assertThat(scenario.instances(interventionProcessScenario)).anySatisfy(process -> {
assertThat(process).variables().containsEntry("taskNameDescrEn", interventionDescrEn);
assertThat(process).variables().containsEntry("taskNameDescrFr", interventionDescrFr);
assertThat(process).variables().containsEntry("interventionRefName", interventionRefName);
});
assertThat(scenario.instances(rrspWithdrawalProcessScenario)).anySatisfy(process ->
assertThat(process).isEnded()
);
ProcessInstance updatePendingReviewStatusProcessInstance = scenario.instances(updatePendingReviewStatusProcessScenario).get(0);
assertThat(updatePendingReviewStatusProcessInstance).variables().containsEntry("statusCd", "PENDING_REVIEW");
for (ProcessInstance updateStatusProcessInstance : scenario.instances(updateInstructionStatusProcessScenario)) {
assertThat(updateStatusProcessInstance).variables().containsEntry("statusCd", "UNDER_REVIEW");
}
}
private void validateAdminProManualInputIntervention(){
assertThat(scenario.instances(manualInputProcessScenario)).anySatisfy(process -> {
assertThat(process).variables().containsEntry("taskNameDescrEn", "Manual Input");
assertThat(process).variables().containsEntry("taskNameDescrFr", "Saisie Manuelle");
assertThat(process).variables().containsEntry("interventionRefName", "MAN_OSS_ACT_ADM");
});
for (ProcessInstance rrsProcessInstance : scenario.instances(rrspWithdrawalProcessScenario)) {
assertThat(rrsProcessInstance).variables().containsEntry("cancellable", false);
}
}