Skip to content

Commit bdeb879

Browse files
dheepak-aotguru-aot
authored andcommitted
#1722 - E2E Tests for assessment gateway (#1822)
E2E Tests for assessment gateway
1 parent 3cf7e96 commit bdeb879

21 files changed

+609
-31
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
export * from "./system-configurations-constants";
22
export * from "./error-code.constants";
33
export * from "./disbursements.constants";
4+
export * from "./worker-constants";
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
export enum Workers {
2+
AssociateWorkflowInstance = "associate-workflow-instance",
3+
VerifyApplicationExceptions = "verify-application-exceptions",
4+
ProgramInfoRequest = "program-info-request",
5+
CreateIncomeRequest = "create-income-request",
6+
CheckIncomeRequest = "check-income-request",
7+
UpdateApplicationStatus = "update-application-status",
8+
LoadAssessmentConsolidatedData = "load-assessment-consolidated-data",
9+
UpdateNOAStatus = "update-noa-status",
10+
SaveAssessmentData = "save-assessment-data",
11+
SaveDisbursementSchedules = "save-disbursement-schedules",
12+
AssociateMSFAA = "associate-msfaa",
13+
}

sources/packages/backend/workflow/BPMN/camunda-8/assessment-gateway.bpmn

+15-15
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:zeebe="http://camunda.org/schema/zeebe/1.0" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:modeler="http://camunda.org/schema/modeler/1.0" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.4.2" modeler:executionPlatform="Camunda Cloud" modeler:executionPlatformVersion="8.1.0" camunda:diagramRelationId="f874f098-96b6-491d-81ec-ecf7a0d8c67a">
2+
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:zeebe="http://camunda.org/schema/zeebe/1.0" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:modeler="http://camunda.org/schema/modeler/1.0" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.7.0" modeler:executionPlatform="Camunda Cloud" modeler:executionPlatformVersion="8.1.0" camunda:diagramRelationId="f874f098-96b6-491d-81ec-ecf7a0d8c67a">
33
<bpmn:collaboration id="Collaboration_0z9wj8q">
44
<bpmn:participant id="application-in-progress" name="Assessment" processRef="assessment-gateway" />
55
<bpmn:group id="Group_1k2osho" categoryValueRef="CategoryValue_1yy7g02" />
@@ -63,17 +63,17 @@
6363
<bpmn:flowNodeRef>save-assessment-data-task</bpmn:flowNodeRef>
6464
<bpmn:flowNodeRef>Activity_09v8xl0</bpmn:flowNodeRef>
6565
<bpmn:flowNodeRef>Activity_0w3u365</bpmn:flowNodeRef>
66-
<bpmn:flowNodeRef>Activity_0c3xjw5</bpmn:flowNodeRef>
66+
<bpmn:flowNodeRef>save-assessment-data-part-time-task</bpmn:flowNodeRef>
6767
<bpmn:flowNodeRef>Gateway_1hwknxt</bpmn:flowNodeRef>
6868
<bpmn:flowNodeRef>Gateway_1m2js1c</bpmn:flowNodeRef>
69-
<bpmn:flowNodeRef>Activity_1s9o49x</bpmn:flowNodeRef>
69+
<bpmn:flowNodeRef>update-application-status-to-assessment-task</bpmn:flowNodeRef>
7070
<bpmn:flowNodeRef>associate-msfaa-task</bpmn:flowNodeRef>
7171
<bpmn:flowNodeRef>Event_0mtgfbi</bpmn:flowNodeRef>
7272
<bpmn:flowNodeRef>Gateway_04wql0w</bpmn:flowNodeRef>
7373
<bpmn:flowNodeRef>update-noa-status-to-required-task</bpmn:flowNodeRef>
7474
<bpmn:flowNodeRef>update-noa-status-to-not-required-task</bpmn:flowNodeRef>
7575
<bpmn:flowNodeRef>save-disbursement-task</bpmn:flowNodeRef>
76-
<bpmn:flowNodeRef>Activity_15g0nan</bpmn:flowNodeRef>
76+
<bpmn:flowNodeRef>save-disbursement-part-time-task</bpmn:flowNodeRef>
7777
</bpmn:lane>
7878
</bpmn:laneSet>
7979
<bpmn:exclusiveGateway id="first-assessment-gateway" name="First Assessment?">
@@ -558,7 +558,7 @@
558558
<bpmn:incoming>Flow_1k200x2</bpmn:incoming>
559559
<bpmn:outgoing>Flow_17yc7mz</bpmn:outgoing>
560560
</bpmn:callActivity>
561-
<bpmn:serviceTask id="Activity_0c3xjw5" name="Save assessment output">
561+
<bpmn:serviceTask id="save-assessment-data-part-time-task" name="Save assessment output">
562562
<bpmn:extensionElements>
563563
<zeebe:ioMapping>
564564
<zeebe:input source="={&#10; weeks: offeringWeeks,&#10; tuitionCost: offeringActualTuitionCosts,&#10; childcareCost: calculatedDataChildCareCost,&#10; totalFamilyIncome: calculatedDataTotalFamilyIncome,&#10; transportationCost: calculatedDataTransportationAllownace,&#10; booksAndSuppliesCost: offeringProgramRelatedCosts,&#10; miscellaneousAllowance: calculatedDataMiscellaneousAllowance,&#10; exceptionalEducationCost: offeringExceptionalExpenses,&#10; assessedNeed: calculatedDataTotalAssessedNeed&#10;}" target="assessmentData" />
@@ -573,9 +573,9 @@
573573
<bpmn:sequenceFlow id="Flow_0wed99j" sourceRef="save-disbursement-task" targetRef="save-assessment-data-task" />
574574
<bpmn:sequenceFlow id="Flow_1izp0bk" sourceRef="save-assessment-data-task" targetRef="Gateway_1hwknxt" />
575575
<bpmn:sequenceFlow id="Flow_1k200x2" sourceRef="Activity_09v8xl0" targetRef="Activity_0w3u365" />
576-
<bpmn:sequenceFlow id="Flow_17yc7mz" sourceRef="Activity_0w3u365" targetRef="Activity_15g0nan" />
577-
<bpmn:sequenceFlow id="Flow_1y2j9iz" sourceRef="Activity_15g0nan" targetRef="Activity_0c3xjw5" />
578-
<bpmn:sequenceFlow id="Flow_1f8ymzi" sourceRef="Activity_0c3xjw5" targetRef="Gateway_1hwknxt" />
576+
<bpmn:sequenceFlow id="Flow_17yc7mz" sourceRef="Activity_0w3u365" targetRef="save-disbursement-part-time-task" />
577+
<bpmn:sequenceFlow id="Flow_1y2j9iz" sourceRef="save-disbursement-part-time-task" targetRef="save-assessment-data-part-time-task" />
578+
<bpmn:sequenceFlow id="Flow_1f8ymzi" sourceRef="save-assessment-data-part-time-task" targetRef="Gateway_1hwknxt" />
579579
<bpmn:exclusiveGateway id="Gateway_1hwknxt">
580580
<bpmn:incoming>Flow_1izp0bk</bpmn:incoming>
581581
<bpmn:incoming>Flow_1f8ymzi</bpmn:incoming>
@@ -587,7 +587,7 @@
587587
<bpmn:outgoing>Flow_1a4wzic</bpmn:outgoing>
588588
<bpmn:outgoing>Flow_01iq5cw</bpmn:outgoing>
589589
</bpmn:exclusiveGateway>
590-
<bpmn:serviceTask id="Activity_1s9o49x" name="Update Application Status to &#39;Assessment&#39;">
590+
<bpmn:serviceTask id="update-application-status-to-assessment-task" name="Update Application Status to &#39;Assessment&#39;">
591591
<bpmn:extensionElements>
592592
<zeebe:taskDefinition type="update-application-status" />
593593
<zeebe:taskHeaders>
@@ -645,10 +645,10 @@
645645
<bpmn:sequenceFlow id="Flow_01iq5cw" name="Reassessment" sourceRef="Gateway_1m2js1c" targetRef="update-noa-status-to-not-required-task">
646646
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=assessmentTriggerType != "Original assessment"</bpmn:conditionExpression>
647647
</bpmn:sequenceFlow>
648-
<bpmn:sequenceFlow id="Flow_1a4wzic" name="Assessment" sourceRef="Gateway_1m2js1c" targetRef="Activity_1s9o49x">
648+
<bpmn:sequenceFlow id="Flow_1a4wzic" name="Assessment" sourceRef="Gateway_1m2js1c" targetRef="update-application-status-to-assessment-task">
649649
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=assessmentTriggerType = "Original assessment"</bpmn:conditionExpression>
650650
</bpmn:sequenceFlow>
651-
<bpmn:sequenceFlow id="Flow_0mayggl" sourceRef="Activity_1s9o49x" targetRef="associate-msfaa-task" />
651+
<bpmn:sequenceFlow id="Flow_0mayggl" sourceRef="update-application-status-to-assessment-task" targetRef="associate-msfaa-task" />
652652
<bpmn:sequenceFlow id="Flow_1v9csm7" sourceRef="associate-msfaa-task" targetRef="update-noa-status-to-required-task" />
653653
<bpmn:sequenceFlow id="Flow_0z518wc" sourceRef="Gateway_04wql0w" targetRef="Event_0mtgfbi" />
654654
<bpmn:sequenceFlow id="Flow_0hmh3m7" sourceRef="update-noa-status-to-not-required-task" targetRef="Gateway_04wql0w" />
@@ -663,7 +663,7 @@
663663
<bpmn:incoming>Flow_0qmdwld</bpmn:incoming>
664664
<bpmn:outgoing>Flow_0wed99j</bpmn:outgoing>
665665
</bpmn:serviceTask>
666-
<bpmn:serviceTask id="Activity_15g0nan" name="Save disbursement">
666+
<bpmn:serviceTask id="save-disbursement-part-time-task" name="Save disbursement">
667667
<bpmn:extensionElements>
668668
<zeebe:taskDefinition type="save-disbursement-schedules" />
669669
<zeebe:ioMapping>
@@ -895,7 +895,7 @@
895895
<dc:Bounds x="2760" y="1680" width="100" height="80" />
896896
<bpmndi:BPMNLabel />
897897
</bpmndi:BPMNShape>
898-
<bpmndi:BPMNShape id="BPMNShape_10gkyni" bpmnElement="Activity_0c3xjw5">
898+
<bpmndi:BPMNShape id="BPMNShape_10gkyni" bpmnElement="save-assessment-data-part-time-task">
899899
<dc:Bounds x="3080" y="1680" width="100" height="80" />
900900
<bpmndi:BPMNLabel />
901901
</bpmndi:BPMNShape>
@@ -905,7 +905,7 @@
905905
<bpmndi:BPMNShape id="Gateway_1m2js1c_di" bpmnElement="Gateway_1m2js1c" isMarkerVisible="true">
906906
<dc:Bounds x="3345" y="1595" width="50" height="50" />
907907
</bpmndi:BPMNShape>
908-
<bpmndi:BPMNShape id="BPMNShape_1usikde" bpmnElement="Activity_1s9o49x">
908+
<bpmndi:BPMNShape id="BPMNShape_1usikde" bpmnElement="update-application-status-to-assessment-task">
909909
<dc:Bounds x="3460" y="1520" width="100" height="80" />
910910
<bpmndi:BPMNLabel />
911911
</bpmndi:BPMNShape>
@@ -931,7 +931,7 @@
931931
<dc:Bounds x="2930" y="1580" width="100" height="80" />
932932
<bpmndi:BPMNLabel />
933933
</bpmndi:BPMNShape>
934-
<bpmndi:BPMNShape id="BPMNShape_0hgpw0i" bpmnElement="Activity_15g0nan">
934+
<bpmndi:BPMNShape id="BPMNShape_0hgpw0i" bpmnElement="save-disbursement-part-time-task">
935935
<dc:Bounds x="2930" y="1680" width="100" height="80" />
936936
<bpmndi:BPMNLabel />
937937
</bpmndi:BPMNShape>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import { ASSESSMENT_ID } from "@sims/services/workflow/variables/assessment-gateway";
2+
import {
3+
ApplicationExceptionStatus,
4+
AssessmentTriggerType,
5+
} from "@sims/sims-db";
6+
import { AssessmentConsolidatedData } from "../../models";
7+
import { ZBClient } from "zeebe-node";
8+
import {
9+
createFakeConsolidatedFulltimeData,
10+
ZeebeMockedClient,
11+
PROCESS_INSTANCE_CREATE_TIMEOUT,
12+
WorkflowServiceTasks,
13+
createFakeSingleIndependentStudentData,
14+
expectToPassThroughServiceTasks,
15+
} from "../../test-utils";
16+
import { PROGRAM_YEAR } from "../constants/program-year.constants";
17+
18+
describe(`E2E Test Workflow assessment gateway on original assessment for ${PROGRAM_YEAR}`, () => {
19+
let zeebeClientProvider: ZBClient;
20+
beforeAll(async () => {
21+
zeebeClientProvider = ZeebeMockedClient.getMockedZeebeInstance();
22+
});
23+
24+
it("Should follow the expected workflow path when student is single and independent without application exception and PIR.", async () => {
25+
// Arrange
26+
const assessmentConsolidatedData: AssessmentConsolidatedData = {
27+
...createFakeConsolidatedFulltimeData(PROGRAM_YEAR),
28+
assessmentTriggerType: AssessmentTriggerType.OriginalAssessment,
29+
...createFakeSingleIndependentStudentData(),
30+
// Application with PIR not required.
31+
studentDataSelectedOffering: 1,
32+
};
33+
34+
// Act/Assert
35+
const assessmentGatewayResponse =
36+
await zeebeClientProvider.createProcessInstanceWithResult({
37+
bpmnProcessId: "assessment-gateway",
38+
variables: {
39+
[ASSESSMENT_ID]: 1,
40+
// Data that will be returned by the worker that subscribe to load assessment data service task.
41+
[`${WorkflowServiceTasks.LoadAssessmentConsolidatedData}-result`]:
42+
assessmentConsolidatedData,
43+
[`${WorkflowServiceTasks.VerifyApplicationExceptions}-result`]: {
44+
// Application with no exception.
45+
applicationExceptionStatus: ApplicationExceptionStatus.Approved,
46+
},
47+
},
48+
requestTimeout: PROCESS_INSTANCE_CREATE_TIMEOUT,
49+
});
50+
expectToPassThroughServiceTasks(
51+
assessmentGatewayResponse.variables,
52+
WorkflowServiceTasks.AssociateWorkflowInstance,
53+
WorkflowServiceTasks.VerifyApplicationExceptions,
54+
WorkflowServiceTasks.ProgramInfoNotRequired,
55+
WorkflowServiceTasks.SaveDisbursementSchedules,
56+
WorkflowServiceTasks.AssociateMSFAA,
57+
WorkflowServiceTasks.UpdateNOAStatusToRequired,
58+
);
59+
});
60+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import { ASSESSMENT_ID } from "@sims/services/workflow/variables/assessment-gateway";
2+
import { AssessmentTriggerType } from "@sims/sims-db";
3+
import { ZBClient } from "zeebe-node";
4+
import { AssessmentConsolidatedData } from "../../models";
5+
import {
6+
createFakeConsolidatedFulltimeData,
7+
ZeebeMockedClient,
8+
PROCESS_INSTANCE_CREATE_TIMEOUT,
9+
WorkflowServiceTasks,
10+
createFakeSingleIndependentStudentData,
11+
expectToPassThroughServiceTasks,
12+
expectNotToPassThroughServiceTasks,
13+
} from "../../test-utils";
14+
import { PROGRAM_YEAR } from "../constants/program-year.constants";
15+
16+
describe(`E2E Test Workflow assessment gateway on student appeal for ${PROGRAM_YEAR}`, () => {
17+
let zeebeClientProvider: ZBClient;
18+
beforeAll(async () => {
19+
zeebeClientProvider = ZeebeMockedClient.getMockedZeebeInstance();
20+
});
21+
22+
it("Should follow the expected workflow path when student single and independent.", async () => {
23+
// Arrange
24+
const assessmentConsolidatedData: AssessmentConsolidatedData = {
25+
...createFakeConsolidatedFulltimeData(PROGRAM_YEAR),
26+
assessmentTriggerType: AssessmentTriggerType.StudentAppeal,
27+
...createFakeSingleIndependentStudentData(),
28+
};
29+
30+
// Act/Assert
31+
const assessmentGatewayResponse =
32+
await zeebeClientProvider.createProcessInstanceWithResult({
33+
bpmnProcessId: "assessment-gateway",
34+
variables: {
35+
[ASSESSMENT_ID]: 1,
36+
// Data that will be returned by the worker that subscribe to load assessment data service task.
37+
[`${WorkflowServiceTasks.LoadAssessmentConsolidatedData}-result`]:
38+
assessmentConsolidatedData,
39+
},
40+
requestTimeout: PROCESS_INSTANCE_CREATE_TIMEOUT,
41+
});
42+
expectToPassThroughServiceTasks(
43+
assessmentGatewayResponse.variables,
44+
WorkflowServiceTasks.AssociateWorkflowInstance,
45+
WorkflowServiceTasks.SaveDisbursementSchedules,
46+
WorkflowServiceTasks.UpdateNOAStatusToNotRequired,
47+
);
48+
expectNotToPassThroughServiceTasks(
49+
assessmentGatewayResponse.variables,
50+
WorkflowServiceTasks.UpdateApplicationStatusToInProgress,
51+
WorkflowServiceTasks.UpdateApplicationStatusToAssessment,
52+
);
53+
});
54+
});

sources/packages/backend/workflow/test/2021-2022/fulltime-assessment/fulltime-assessment-2021-2022.e2e-spec.ts

+13-3
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,17 @@ import {
55
CalculatedAssessmentModel,
66
} from "../../models";
77
import { ZBClient } from "zeebe-node";
8-
import { createFakeAssessmentConsolidatedData } from "../../test-utils";
8+
import {
9+
createFakeAssessmentConsolidatedData,
10+
PROCESS_INSTANCE_CREATE_TIMEOUT,
11+
ZeebeMockedClient,
12+
} from "../../test-utils";
913
import { PROGRAM_YEAR } from "../constants/program-year.constants";
1014

1115
describe(`E2E Test Workflow fulltime-assessment-${PROGRAM_YEAR}`, () => {
1216
let zeebeClientProvider: ZBClient;
1317
beforeAll(async () => {
14-
zeebeClientProvider = new ZBClient();
18+
zeebeClientProvider = ZeebeMockedClient.getMockedZeebeInstance();
1519
});
1620

1721
it("Should generate expected fulltime assessment values when the student is single and independent.", async () => {
@@ -54,7 +58,13 @@ describe(`E2E Test Workflow fulltime-assessment-${PROGRAM_YEAR}`, () => {
5458
await zeebeClientProvider.createProcessInstanceWithResult<
5559
AssessmentConsolidatedData,
5660
CalculatedAssessmentModel
57-
>(`fulltime-assessment-${PROGRAM_YEAR}`, assessmentConsolidatedData);
61+
>({
62+
bpmnProcessId: `fulltime-assessment-${PROGRAM_YEAR}`,
63+
variables: {
64+
...assessmentConsolidatedData,
65+
},
66+
requestTimeout: PROCESS_INSTANCE_CREATE_TIMEOUT,
67+
});
5868
// TODO: totalFederalContribution and totalProvincialContribution needs to be validated
5969
// once it is fixed in bpmn.
6070
expect(calculatedAssessment.variables.offeringWeeks).toBe(
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import { ASSESSMENT_ID } from "@sims/services/workflow/variables/assessment-gateway";
2+
import {
3+
ApplicationExceptionStatus,
4+
AssessmentTriggerType,
5+
} from "@sims/sims-db";
6+
import { ZBClient } from "zeebe-node";
7+
import { AssessmentConsolidatedData } from "../../models";
8+
import {
9+
createFakeConsolidatedFulltimeData,
10+
ZeebeMockedClient,
11+
PROCESS_INSTANCE_CREATE_TIMEOUT,
12+
WorkflowServiceTasks,
13+
createFakeSingleIndependentStudentData,
14+
expectToPassThroughServiceTasks,
15+
} from "../../test-utils";
16+
import { PROGRAM_YEAR } from "../constants/program-year.constants";
17+
18+
describe(`E2E Test Workflow assessment gateway on original assessment for ${PROGRAM_YEAR}`, () => {
19+
let zeebeClientProvider: ZBClient;
20+
beforeAll(async () => {
21+
zeebeClientProvider = ZeebeMockedClient.getMockedZeebeInstance();
22+
});
23+
24+
it("Should follow the expected workflow path when student is single and independent without application exception and PIR.", async () => {
25+
// Arrange
26+
const assessmentConsolidatedData: AssessmentConsolidatedData = {
27+
...createFakeConsolidatedFulltimeData(PROGRAM_YEAR),
28+
assessmentTriggerType: AssessmentTriggerType.OriginalAssessment,
29+
...createFakeSingleIndependentStudentData(),
30+
// Application with PIR not required.
31+
studentDataSelectedOffering: 1,
32+
};
33+
34+
// Act/Assert
35+
const assessmentGatewayResponse =
36+
await zeebeClientProvider.createProcessInstanceWithResult({
37+
bpmnProcessId: "assessment-gateway",
38+
variables: {
39+
[ASSESSMENT_ID]: 1,
40+
// Data that will be returned by the worker that subscribe to load assessment data service task.
41+
[`${WorkflowServiceTasks.LoadAssessmentConsolidatedData}-result`]:
42+
assessmentConsolidatedData,
43+
[`${WorkflowServiceTasks.VerifyApplicationExceptions}-result`]: {
44+
// Application with no exception.
45+
applicationExceptionStatus: ApplicationExceptionStatus.Approved,
46+
},
47+
},
48+
requestTimeout: PROCESS_INSTANCE_CREATE_TIMEOUT,
49+
});
50+
expectToPassThroughServiceTasks(
51+
assessmentGatewayResponse.variables,
52+
WorkflowServiceTasks.AssociateWorkflowInstance,
53+
WorkflowServiceTasks.VerifyApplicationExceptions,
54+
WorkflowServiceTasks.ProgramInfoNotRequired,
55+
WorkflowServiceTasks.SaveDisbursementSchedules,
56+
WorkflowServiceTasks.AssociateMSFAA,
57+
WorkflowServiceTasks.UpdateNOAStatusToRequired,
58+
);
59+
});
60+
});

0 commit comments

Comments
 (0)