import { BlameRequestType } from "src/Types&Enums/blame-request-management/blameRequestType.enum"; import { RequestManagementService } from "./request-management.service"; describe("RequestManagementService previous policyholder routing", () => { const currentPlate = { leftDigits: "44", centerAlphabet: "ب", centerDigits: "111", ir: "22", }; const previousPlate = { leftDigits: "55", centerAlphabet: "ج", centerDigits: "222", ir: "33", }; const vehicle = { registrationState: "RECENTLY_TRANSFERRED", currentPlate, previousPlate, previousPolicyholderNationalCode: "0098765432", vin: "NAAM01E15HK123456", }; function participantInput(caseType: BlameRequestType) { return { driver: { nationalCode: "0011111111", birthday: "1370/01/01", hasDrivingLicense: false, }, vehicleOwner: { sameAs: "DRIVER" }, thirdPartyPolicyholder: { nationalCode: "0022222222", birthday: "1360/02/02", }, ...(caseType === BlameRequestType.CAR_BODY ? { carBodyPolicyholder: { nationalCode: "0033333333", birthday: "1350/03/03", }, } : {}), vehicle, }; } it("uses the previous code only for the previous-plate third-party lookup", async () => { const service = Object.create(RequestManagementService.prototype) as any; service.sandHubService = { getTejaratBlockInquiry: jest .fn() .mockResolvedValueOnce({ raw: {}, mapped: {} }) .mockResolvedValueOnce({ raw: {}, mapped: { CompanyName: "پارسیان", VinNumberField: vehicle.vin, }, }), }; const submission = service.normalizeInquiryInput( BlameRequestType.THIRD_PARTY, participantInput(BlameRequestType.THIRD_PARTY), ); const result = await service.getThirdPartyPlateInquiry(submission); expect(result.plateKind).toBe("PREVIOUS"); expect( service.sandHubService.getTejaratBlockInquiry, ).toHaveBeenNthCalledWith( 1, expect.objectContaining({ plate: currentPlate, nationalCodeOfInsurer: "0022222222", }), undefined, ); expect( service.sandHubService.getTejaratBlockInquiry, ).toHaveBeenNthCalledWith( 2, expect.objectContaining({ plate: previousPlate, nationalCodeOfInsurer: "0098765432", }), undefined, ); }); it("uses the previous code only for the previous-plate car-body lookup", async () => { const service = Object.create(RequestManagementService.prototype) as any; service.sandHubService = { getCarBodyInquiry: jest .fn() .mockResolvedValueOnce({ raw: {}, mapped: {} }) .mockResolvedValueOnce({ raw: {}, mapped: { policyNumber: "BODY-1", VinNumberField: vehicle.vin, }, }), }; const submission = service.normalizeInquiryInput( BlameRequestType.CAR_BODY, participantInput(BlameRequestType.CAR_BODY), ); const result = await service.getCarBodyPlateInquiry(submission); expect(result.plateKind).toBe("PREVIOUS"); expect(service.sandHubService.getCarBodyInquiry).toHaveBeenNthCalledWith( 1, expect.objectContaining({ plate: currentPlate, nationalCodeOfInsurer: "0033333333", }), ); expect(service.sandHubService.getCarBodyInquiry).toHaveBeenNthCalledWith( 2, expect.objectContaining({ plate: previousPlate, nationalCodeOfInsurer: "0098765432", }), ); }); });