Skip to content

Commit

Permalink
#1722 - E2E Tests for assessment gateway (#1822)
Browse files Browse the repository at this point in the history
E2E Tests for assessment gateway
  • Loading branch information
dheepak-aot authored and guru-aot committed Mar 28, 2023
1 parent 3cf7e96 commit e13e613
Show file tree
Hide file tree
Showing 21 changed files with 609 additions and 31 deletions.
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
export * from "./system-configurations-constants";
export * from "./error-code.constants";
export * from "./disbursements.constants";
export * from "./worker-constants";
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
export enum Workers {
AssociateWorkflowInstance = "associate-workflow-instance",
VerifyApplicationExceptions = "verify-application-exceptions",
ProgramInfoRequest = "program-info-request",
CreateIncomeRequest = "create-income-request",
CheckIncomeRequest = "check-income-request",
UpdateApplicationStatus = "update-application-status",
LoadAssessmentConsolidatedData = "load-assessment-consolidated-data",
UpdateNOAStatus = "update-noa-status",
SaveAssessmentData = "save-assessment-data",
SaveDisbursementSchedules = "save-disbursement-schedules",
AssociateMSFAA = "associate-msfaa",
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<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">
<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">
<bpmn:collaboration id="Collaboration_0z9wj8q">
<bpmn:participant id="application-in-progress" name="Assessment" processRef="assessment-gateway" />
<bpmn:group id="Group_1k2osho" categoryValueRef="CategoryValue_1yy7g02" />
Expand Down Expand Up @@ -63,17 +63,17 @@
<bpmn:flowNodeRef>save-assessment-data-task</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_09v8xl0</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_0w3u365</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_0c3xjw5</bpmn:flowNodeRef>
<bpmn:flowNodeRef>save-assessment-data-part-time-task</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_1hwknxt</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_1m2js1c</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_1s9o49x</bpmn:flowNodeRef>
<bpmn:flowNodeRef>update-application-status-to-assessment-task</bpmn:flowNodeRef>
<bpmn:flowNodeRef>associate-msfaa-task</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Event_0mtgfbi</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Gateway_04wql0w</bpmn:flowNodeRef>
<bpmn:flowNodeRef>update-noa-status-to-required-task</bpmn:flowNodeRef>
<bpmn:flowNodeRef>update-noa-status-to-not-required-task</bpmn:flowNodeRef>
<bpmn:flowNodeRef>save-disbursement-task</bpmn:flowNodeRef>
<bpmn:flowNodeRef>Activity_15g0nan</bpmn:flowNodeRef>
<bpmn:flowNodeRef>save-disbursement-part-time-task</bpmn:flowNodeRef>
</bpmn:lane>
</bpmn:laneSet>
<bpmn:exclusiveGateway id="first-assessment-gateway" name="First Assessment?">
Expand Down Expand Up @@ -558,7 +558,7 @@
<bpmn:incoming>Flow_1k200x2</bpmn:incoming>
<bpmn:outgoing>Flow_17yc7mz</bpmn:outgoing>
</bpmn:callActivity>
<bpmn:serviceTask id="Activity_0c3xjw5" name="Save assessment output">
<bpmn:serviceTask id="save-assessment-data-part-time-task" name="Save assessment output">
<bpmn:extensionElements>
<zeebe:ioMapping>
<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" />
Expand All @@ -573,9 +573,9 @@
<bpmn:sequenceFlow id="Flow_0wed99j" sourceRef="save-disbursement-task" targetRef="save-assessment-data-task" />
<bpmn:sequenceFlow id="Flow_1izp0bk" sourceRef="save-assessment-data-task" targetRef="Gateway_1hwknxt" />
<bpmn:sequenceFlow id="Flow_1k200x2" sourceRef="Activity_09v8xl0" targetRef="Activity_0w3u365" />
<bpmn:sequenceFlow id="Flow_17yc7mz" sourceRef="Activity_0w3u365" targetRef="Activity_15g0nan" />
<bpmn:sequenceFlow id="Flow_1y2j9iz" sourceRef="Activity_15g0nan" targetRef="Activity_0c3xjw5" />
<bpmn:sequenceFlow id="Flow_1f8ymzi" sourceRef="Activity_0c3xjw5" targetRef="Gateway_1hwknxt" />
<bpmn:sequenceFlow id="Flow_17yc7mz" sourceRef="Activity_0w3u365" targetRef="save-disbursement-part-time-task" />
<bpmn:sequenceFlow id="Flow_1y2j9iz" sourceRef="save-disbursement-part-time-task" targetRef="save-assessment-data-part-time-task" />
<bpmn:sequenceFlow id="Flow_1f8ymzi" sourceRef="save-assessment-data-part-time-task" targetRef="Gateway_1hwknxt" />
<bpmn:exclusiveGateway id="Gateway_1hwknxt">
<bpmn:incoming>Flow_1izp0bk</bpmn:incoming>
<bpmn:incoming>Flow_1f8ymzi</bpmn:incoming>
Expand All @@ -587,7 +587,7 @@
<bpmn:outgoing>Flow_1a4wzic</bpmn:outgoing>
<bpmn:outgoing>Flow_01iq5cw</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:serviceTask id="Activity_1s9o49x" name="Update Application Status to &#39;Assessment&#39;">
<bpmn:serviceTask id="update-application-status-to-assessment-task" name="Update Application Status to &#39;Assessment&#39;">
<bpmn:extensionElements>
<zeebe:taskDefinition type="update-application-status" />
<zeebe:taskHeaders>
Expand Down Expand Up @@ -645,10 +645,10 @@
<bpmn:sequenceFlow id="Flow_01iq5cw" name="Reassessment" sourceRef="Gateway_1m2js1c" targetRef="update-noa-status-to-not-required-task">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=assessmentTriggerType != "Original assessment"</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_1a4wzic" name="Assessment" sourceRef="Gateway_1m2js1c" targetRef="Activity_1s9o49x">
<bpmn:sequenceFlow id="Flow_1a4wzic" name="Assessment" sourceRef="Gateway_1m2js1c" targetRef="update-application-status-to-assessment-task">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=assessmentTriggerType = "Original assessment"</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_0mayggl" sourceRef="Activity_1s9o49x" targetRef="associate-msfaa-task" />
<bpmn:sequenceFlow id="Flow_0mayggl" sourceRef="update-application-status-to-assessment-task" targetRef="associate-msfaa-task" />
<bpmn:sequenceFlow id="Flow_1v9csm7" sourceRef="associate-msfaa-task" targetRef="update-noa-status-to-required-task" />
<bpmn:sequenceFlow id="Flow_0z518wc" sourceRef="Gateway_04wql0w" targetRef="Event_0mtgfbi" />
<bpmn:sequenceFlow id="Flow_0hmh3m7" sourceRef="update-noa-status-to-not-required-task" targetRef="Gateway_04wql0w" />
Expand All @@ -663,7 +663,7 @@
<bpmn:incoming>Flow_0qmdwld</bpmn:incoming>
<bpmn:outgoing>Flow_0wed99j</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:serviceTask id="Activity_15g0nan" name="Save disbursement">
<bpmn:serviceTask id="save-disbursement-part-time-task" name="Save disbursement">
<bpmn:extensionElements>
<zeebe:taskDefinition type="save-disbursement-schedules" />
<zeebe:ioMapping>
Expand Down Expand Up @@ -895,7 +895,7 @@
<dc:Bounds x="2760" y="1680" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_10gkyni" bpmnElement="Activity_0c3xjw5">
<bpmndi:BPMNShape id="BPMNShape_10gkyni" bpmnElement="save-assessment-data-part-time-task">
<dc:Bounds x="3080" y="1680" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
Expand All @@ -905,7 +905,7 @@
<bpmndi:BPMNShape id="Gateway_1m2js1c_di" bpmnElement="Gateway_1m2js1c" isMarkerVisible="true">
<dc:Bounds x="3345" y="1595" width="50" height="50" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1usikde" bpmnElement="Activity_1s9o49x">
<bpmndi:BPMNShape id="BPMNShape_1usikde" bpmnElement="update-application-status-to-assessment-task">
<dc:Bounds x="3460" y="1520" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
Expand All @@ -931,7 +931,7 @@
<dc:Bounds x="2930" y="1580" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_0hgpw0i" bpmnElement="Activity_15g0nan">
<bpmndi:BPMNShape id="BPMNShape_0hgpw0i" bpmnElement="save-disbursement-part-time-task">
<dc:Bounds x="2930" y="1680" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import { ASSESSMENT_ID } from "@sims/services/workflow/variables/assessment-gateway";
import {
ApplicationExceptionStatus,
AssessmentTriggerType,
} from "@sims/sims-db";
import { AssessmentConsolidatedData } from "../../models";
import { ZBClient } from "zeebe-node";
import {
createFakeConsolidatedFulltimeData,
ZeebeMockedClient,
PROCESS_INSTANCE_CREATE_TIMEOUT,
WorkflowServiceTasks,
createFakeSingleIndependentStudentData,
expectToPassThroughServiceTasks,
} from "../../test-utils";
import { PROGRAM_YEAR } from "../constants/program-year.constants";

describe(`E2E Test Workflow assessment gateway on original assessment for ${PROGRAM_YEAR}`, () => {
let zeebeClientProvider: ZBClient;
beforeAll(async () => {
zeebeClientProvider = ZeebeMockedClient.getMockedZeebeInstance();
});

it("Should follow the expected workflow path when student is single and independent without application exception and PIR.", async () => {
// Arrange
const assessmentConsolidatedData: AssessmentConsolidatedData = {
...createFakeConsolidatedFulltimeData(PROGRAM_YEAR),
assessmentTriggerType: AssessmentTriggerType.OriginalAssessment,
...createFakeSingleIndependentStudentData(),
// Application with PIR not required.
studentDataSelectedOffering: 1,
};

// Act/Assert
const assessmentGatewayResponse =
await zeebeClientProvider.createProcessInstanceWithResult({
bpmnProcessId: "assessment-gateway",
variables: {
[ASSESSMENT_ID]: 1,
// Data that will be returned by the worker that subscribe to load assessment data service task.
[`${WorkflowServiceTasks.LoadAssessmentConsolidatedData}-result`]:
assessmentConsolidatedData,
[`${WorkflowServiceTasks.VerifyApplicationExceptions}-result`]: {
// Application with no exception.
applicationExceptionStatus: ApplicationExceptionStatus.Approved,
},
},
requestTimeout: PROCESS_INSTANCE_CREATE_TIMEOUT,
});
expectToPassThroughServiceTasks(
assessmentGatewayResponse.variables,
WorkflowServiceTasks.AssociateWorkflowInstance,
WorkflowServiceTasks.VerifyApplicationExceptions,
WorkflowServiceTasks.ProgramInfoNotRequired,
WorkflowServiceTasks.SaveDisbursementSchedules,
WorkflowServiceTasks.AssociateMSFAA,
WorkflowServiceTasks.UpdateNOAStatusToRequired,
);
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import { ASSESSMENT_ID } from "@sims/services/workflow/variables/assessment-gateway";
import { AssessmentTriggerType } from "@sims/sims-db";
import { ZBClient } from "zeebe-node";
import { AssessmentConsolidatedData } from "../../models";
import {
createFakeConsolidatedFulltimeData,
ZeebeMockedClient,
PROCESS_INSTANCE_CREATE_TIMEOUT,
WorkflowServiceTasks,
createFakeSingleIndependentStudentData,
expectToPassThroughServiceTasks,
expectNotToPassThroughServiceTasks,
} from "../../test-utils";
import { PROGRAM_YEAR } from "../constants/program-year.constants";

describe(`E2E Test Workflow assessment gateway on student appeal for ${PROGRAM_YEAR}`, () => {
let zeebeClientProvider: ZBClient;
beforeAll(async () => {
zeebeClientProvider = ZeebeMockedClient.getMockedZeebeInstance();
});

it("Should follow the expected workflow path when student single and independent.", async () => {
// Arrange
const assessmentConsolidatedData: AssessmentConsolidatedData = {
...createFakeConsolidatedFulltimeData(PROGRAM_YEAR),
assessmentTriggerType: AssessmentTriggerType.StudentAppeal,
...createFakeSingleIndependentStudentData(),
};

// Act/Assert
const assessmentGatewayResponse =
await zeebeClientProvider.createProcessInstanceWithResult({
bpmnProcessId: "assessment-gateway",
variables: {
[ASSESSMENT_ID]: 1,
// Data that will be returned by the worker that subscribe to load assessment data service task.
[`${WorkflowServiceTasks.LoadAssessmentConsolidatedData}-result`]:
assessmentConsolidatedData,
},
requestTimeout: PROCESS_INSTANCE_CREATE_TIMEOUT,
});
expectToPassThroughServiceTasks(
assessmentGatewayResponse.variables,
WorkflowServiceTasks.AssociateWorkflowInstance,
WorkflowServiceTasks.SaveDisbursementSchedules,
WorkflowServiceTasks.UpdateNOAStatusToNotRequired,
);
expectNotToPassThroughServiceTasks(
assessmentGatewayResponse.variables,
WorkflowServiceTasks.UpdateApplicationStatusToInProgress,
WorkflowServiceTasks.UpdateApplicationStatusToAssessment,
);
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,17 @@ import {
CalculatedAssessmentModel,
} from "../../models";
import { ZBClient } from "zeebe-node";
import { createFakeAssessmentConsolidatedData } from "../../test-utils";
import {
createFakeAssessmentConsolidatedData,
PROCESS_INSTANCE_CREATE_TIMEOUT,
ZeebeMockedClient,
} from "../../test-utils";
import { PROGRAM_YEAR } from "../constants/program-year.constants";

describe(`E2E Test Workflow fulltime-assessment-${PROGRAM_YEAR}`, () => {
let zeebeClientProvider: ZBClient;
beforeAll(async () => {
zeebeClientProvider = new ZBClient();
zeebeClientProvider = ZeebeMockedClient.getMockedZeebeInstance();
});

it("Should generate expected fulltime assessment values when the student is single and independent.", async () => {
Expand Down Expand Up @@ -54,7 +58,13 @@ describe(`E2E Test Workflow fulltime-assessment-${PROGRAM_YEAR}`, () => {
await zeebeClientProvider.createProcessInstanceWithResult<
AssessmentConsolidatedData,
CalculatedAssessmentModel
>(`fulltime-assessment-${PROGRAM_YEAR}`, assessmentConsolidatedData);
>({
bpmnProcessId: `fulltime-assessment-${PROGRAM_YEAR}`,
variables: {
...assessmentConsolidatedData,
},
requestTimeout: PROCESS_INSTANCE_CREATE_TIMEOUT,
});
// TODO: totalFederalContribution and totalProvincialContribution needs to be validated
// once it is fixed in bpmn.
expect(calculatedAssessment.variables.offeringWeeks).toBe(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import { ASSESSMENT_ID } from "@sims/services/workflow/variables/assessment-gateway";
import {
ApplicationExceptionStatus,
AssessmentTriggerType,
} from "@sims/sims-db";
import { ZBClient } from "zeebe-node";
import { AssessmentConsolidatedData } from "../../models";
import {
createFakeConsolidatedFulltimeData,
ZeebeMockedClient,
PROCESS_INSTANCE_CREATE_TIMEOUT,
WorkflowServiceTasks,
createFakeSingleIndependentStudentData,
expectToPassThroughServiceTasks,
} from "../../test-utils";
import { PROGRAM_YEAR } from "../constants/program-year.constants";

describe(`E2E Test Workflow assessment gateway on original assessment for ${PROGRAM_YEAR}`, () => {
let zeebeClientProvider: ZBClient;
beforeAll(async () => {
zeebeClientProvider = ZeebeMockedClient.getMockedZeebeInstance();
});

it("Should follow the expected workflow path when student is single and independent without application exception and PIR.", async () => {
// Arrange
const assessmentConsolidatedData: AssessmentConsolidatedData = {
...createFakeConsolidatedFulltimeData(PROGRAM_YEAR),
assessmentTriggerType: AssessmentTriggerType.OriginalAssessment,
...createFakeSingleIndependentStudentData(),
// Application with PIR not required.
studentDataSelectedOffering: 1,
};

// Act/Assert
const assessmentGatewayResponse =
await zeebeClientProvider.createProcessInstanceWithResult({
bpmnProcessId: "assessment-gateway",
variables: {
[ASSESSMENT_ID]: 1,
// Data that will be returned by the worker that subscribe to load assessment data service task.
[`${WorkflowServiceTasks.LoadAssessmentConsolidatedData}-result`]:
assessmentConsolidatedData,
[`${WorkflowServiceTasks.VerifyApplicationExceptions}-result`]: {
// Application with no exception.
applicationExceptionStatus: ApplicationExceptionStatus.Approved,
},
},
requestTimeout: PROCESS_INSTANCE_CREATE_TIMEOUT,
});
expectToPassThroughServiceTasks(
assessmentGatewayResponse.variables,
WorkflowServiceTasks.AssociateWorkflowInstance,
WorkflowServiceTasks.VerifyApplicationExceptions,
WorkflowServiceTasks.ProgramInfoNotRequired,
WorkflowServiceTasks.SaveDisbursementSchedules,
WorkflowServiceTasks.AssociateMSFAA,
WorkflowServiceTasks.UpdateNOAStatusToRequired,
);
});
});
Loading

0 comments on commit e13e613

Please sign in to comment.