Files
yara724-api/src/request-management/file-maker-status-resume.spec.ts

113 lines
3.7 KiB
TypeScript

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);
});
});