forked from Yara724/api
74 lines
2.4 KiB
TypeScript
74 lines
2.4 KiB
TypeScript
import { BadRequestException } from "@nestjs/common";
|
|
import { ClaimCaseStatus } from "src/Types&Enums/claim-request-management/claim-case-status.enum";
|
|
import { DaghiOption } from "src/Types&Enums/claim-request-management/daghi-option.enum";
|
|
import { RoleEnum } from "src/Types&Enums/role.enum";
|
|
import { TypeOfDamage } from "src/Types&Enums/claim-request-management/type-of-damage.enum";
|
|
import { ExpertClaimService } from "./expert-claim.service";
|
|
|
|
const blankPricingReply = {
|
|
description: "Damage assessment",
|
|
parts: [
|
|
{
|
|
partId: 201,
|
|
typeOfDamage: TypeOfDamage.Repair,
|
|
price: "",
|
|
salary: "",
|
|
totalPayment: "",
|
|
factorNeeded: false,
|
|
daghi: { option: DaghiOption.NO_VALUE },
|
|
},
|
|
],
|
|
};
|
|
|
|
function createService() {
|
|
return new (ExpertClaimService as any)(
|
|
...new Array(21).fill(undefined),
|
|
) as ExpertClaimService;
|
|
}
|
|
|
|
describe("ExpertClaimService expert-reply pricing", () => {
|
|
it("rejects a blank pricing line on the legacy submit endpoint before changing status", async () => {
|
|
const service = createService() as any;
|
|
const findAndUpdate = jest.fn();
|
|
service.claimRequestManagementDbService = {
|
|
findOne: jest.fn().mockResolvedValue({
|
|
_id: "legacy-claim",
|
|
actorLocked: { actorId: "expert-1" },
|
|
unlockTime: new Date(Date.now() + 60_000),
|
|
lockFile: true,
|
|
}),
|
|
findAndUpdate,
|
|
};
|
|
|
|
await expect(
|
|
service.submitReplyRequest("legacy-claim", blankPricingReply, {
|
|
sub: "expert-1",
|
|
}),
|
|
).rejects.toBeInstanceOf(BadRequestException);
|
|
|
|
expect(findAndUpdate).not.toHaveBeenCalled();
|
|
});
|
|
|
|
it("rejects a blank pricing line on the V2 submit endpoint before completion", async () => {
|
|
const service = createService() as any;
|
|
const findByIdAndUpdate = jest.fn();
|
|
service.claimCaseDbService = {
|
|
findById: jest.fn().mockResolvedValue({
|
|
status: ClaimCaseStatus.EXPERT_REVIEWING,
|
|
workflow: { locked: true, lockedBy: { actorId: "expert-1" } },
|
|
}),
|
|
findByIdAndUpdate,
|
|
};
|
|
service.assertExpertActorOnClaim = jest.fn().mockResolvedValue(undefined);
|
|
|
|
await expect(
|
|
service.submitExpertReplyV2("v2-claim", blankPricingReply, {
|
|
sub: "expert-1",
|
|
role: RoleEnum.FIELD_EXPERT,
|
|
}),
|
|
).rejects.toBeInstanceOf(BadRequestException);
|
|
|
|
expect(findByIdAndUpdate).not.toHaveBeenCalled();
|
|
});
|
|
});
|