import { Types } from "mongoose"; import { CaseStatus } from "src/Types&Enums/blame-request-management/caseStatus.enum"; import { ClaimCaseStatus } from "src/Types&Enums/claim-request-management/claim-case-status.enum"; import { RoleEnum } from "src/Types&Enums/role.enum"; import { RequestManagementService } from "./request-management.service"; describe("FileMaker V4/V5 status resume bridge", () => { const makerId = new Types.ObjectId(); const blameId = new Types.ObjectId(); const blameFile = { _id: blameId, publicId: "BL-FM-001", requestNo: "R-1", type: "THIRD_PARTY", status: CaseStatus.OPEN, blameStatus: "IN_PROGRESS", isMadeByFileMaker: true, initiatedByFieldExpertId: makerId, requiresFileMakerApproval: false, parties: [], workflow: { currentStep: "SECOND_COMPLETED", nextStep: "WAITING_FOR_GUILT_DECISION", completedSteps: ["SECOND_COMPLETED"], }, createdAt: new Date(), updatedAt: new Date(), }; it("overlays claim UPLOADING_REQUIRED_DOCUMENTS onto detail status", async () => { const service = new (RequestManagementService as any)() as RequestManagementService; (service as any).blameRequestDbService = { findById: jest.fn().mockResolvedValue(blameFile), }; (service as any).claimCaseDbService = { findOne: jest.fn().mockResolvedValue({ _id: new Types.ObjectId(), blameRequestId: blameId, status: ClaimCaseStatus.UPLOADING_REQUIRED_DOCUMENTS, workflow: { currentStep: "UPLOAD_REQUIRED_DOCUMENTS", nextStep: "SELECT_OUTER_PARTS", }, }), }; const detail = await service.getMyFileMakerFileDetail( { sub: String(makerId), role: RoleEnum.FILE_MAKER }, String(blameId), ); expect(detail.status).toBe(ClaimCaseStatus.UPLOADING_REQUIRED_DOCUMENTS); expect(detail.blameCaseStatus).toBe(CaseStatus.OPEN); expect(detail.claimStatus).toBe( ClaimCaseStatus.UPLOADING_REQUIRED_DOCUMENTS, ); }); it("does not overlay status when claim docs phase is finished", async () => { const service = new (RequestManagementService as any)() as RequestManagementService; (service as any).blameRequestDbService = { findById: jest.fn().mockResolvedValue({ ...blameFile, status: CaseStatus.WAITING_FOR_FILE_REVIEWER, }), }; (service as any).claimCaseDbService = { findOne: jest.fn().mockResolvedValue({ _id: new Types.ObjectId(), blameRequestId: blameId, status: ClaimCaseStatus.WAITING_FOR_FILE_REVIEWER, workflow: { currentStep: "SELECT_OUTER_PARTS" }, }), }; const detail = await service.getMyFileMakerFileDetail( { sub: String(makerId), role: RoleEnum.FILE_MAKER }, String(blameId), ); expect(detail.status).toBe(CaseStatus.WAITING_FOR_FILE_REVIEWER); expect(detail.blameCaseStatus).toBeUndefined(); }); it("overlays the same bridge on my-files list rows", async () => { const service = new (RequestManagementService as any)() as RequestManagementService; (service as any).blameRequestDbService = { find: jest.fn().mockResolvedValue([blameFile]), }; (service as any).claimCaseDbService = { find: jest.fn().mockResolvedValue([ { blameRequestId: blameId, status: ClaimCaseStatus.UPLOADING_REQUIRED_DOCUMENTS, }, ]), }; const rows = await service.getMyFileMakerFiles({ sub: String(makerId), role: RoleEnum.FILE_MAKER, }); expect(rows).toHaveLength(1); expect(rows[0].status).toBe(ClaimCaseStatus.UPLOADING_REQUIRED_DOCUMENTS); expect(rows[0].blameCaseStatus).toBe(CaseStatus.OPEN); }); });