forked from Yara724/api
YARA-1241
This commit is contained in:
183
src/case-expert-report/case-expert-report.builder.spec.ts
Normal file
183
src/case-expert-report/case-expert-report.builder.spec.ts
Normal file
@@ -0,0 +1,183 @@
|
||||
import { buildInsurerFileReport } from "./case-expert-report.builder";
|
||||
import { PR } from "./persian-report-labels";
|
||||
import { toJalaliDateAndTime } from "../helpers/date-jalali";
|
||||
|
||||
describe("buildInsurerFileReport", () => {
|
||||
const getFieldValue = (
|
||||
report: ReturnType<typeof buildInsurerFileReport>,
|
||||
sectionTitle: string,
|
||||
fieldLabel: string,
|
||||
) => {
|
||||
const section = report.sections.find((item) => item.title === sectionTitle);
|
||||
expect(section).toBeDefined();
|
||||
const field = section?.fields.find((item) => item.label === fieldLabel);
|
||||
expect(field).toBeDefined();
|
||||
return field?.value;
|
||||
};
|
||||
|
||||
it("separates insurance blocks and exposes Fanavaran/timeline/evaluation data", () => {
|
||||
const fileCreatedAt = new Date("2026-08-10T09:53:23.588Z");
|
||||
const evaluationSubmittedAt = new Date("2026-08-10T12:30:45.000Z");
|
||||
const [fileDate, fileTime] = toJalaliDateAndTime(fileCreatedAt);
|
||||
const [evaluationDate, evaluationTime] =
|
||||
toJalaliDateAndTime(evaluationSubmittedAt);
|
||||
|
||||
const report = buildInsurerFileReport({
|
||||
overview: {
|
||||
publicId: "A00010",
|
||||
requestNo: "REQ-10",
|
||||
createdAt: fileCreatedAt,
|
||||
},
|
||||
blame: {
|
||||
type: "THIRD_PARTY",
|
||||
blameStatus: "AGREED",
|
||||
createdAt: fileCreatedAt,
|
||||
parties: [
|
||||
{
|
||||
role: "FIRST",
|
||||
person: {
|
||||
userId: "guilty-user-id",
|
||||
fullName: "مقصر نمونه",
|
||||
phoneNumber: "09120000000",
|
||||
clientId: "client-guilty",
|
||||
},
|
||||
statement: { admitsGuilt: true },
|
||||
insurance: {
|
||||
policyNumber: "TP-GUILTY-001",
|
||||
company: "بیمه ثالث مقصر",
|
||||
startDate: "1405/01/01",
|
||||
endDate: "1406/01/01",
|
||||
financialCeiling: "900000000",
|
||||
carBodyInsurance: {
|
||||
policyNumber: "CB-GUILTY-001",
|
||||
insurerCompany: "بیمه بدنه مقصر",
|
||||
startDate: "1405/02/01",
|
||||
endDate: "1406/02/01",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
role: "SECOND",
|
||||
person: {
|
||||
userId: "damaged-user-id",
|
||||
fullName: "زیان دیده نمونه",
|
||||
phoneNumber: "09121111111",
|
||||
nationalCodeOfInsurer: "1234567890",
|
||||
clientId: "client-damaged",
|
||||
insurerBirthday: 13700101,
|
||||
},
|
||||
statement: {
|
||||
claimsDamage: true,
|
||||
description: "توضیحات زیاندیده",
|
||||
accidentDate: "2026-08-10",
|
||||
accidentTime: "13:23",
|
||||
},
|
||||
insurance: {
|
||||
policyNumber: "TP-DAMAGED-001",
|
||||
company: "بیمه ثالث زیاندیده",
|
||||
startDate: "1405/03/01",
|
||||
endDate: "1406/03/01",
|
||||
financialCeiling: "700000000",
|
||||
carBodyInsurance: {
|
||||
policyNumber: "CB-DAMAGED-001",
|
||||
insurerCompany: "بیمه بدنه زیاندیده",
|
||||
startDate: "1405/04/01",
|
||||
endDate: "1406/04/01",
|
||||
coverages: ["سرقت", "آتشسوزی"],
|
||||
},
|
||||
},
|
||||
vehicle: {
|
||||
carName: "207",
|
||||
carModel: "1402",
|
||||
plate: {
|
||||
leftDigits: 12,
|
||||
centerAlphabet: "ب",
|
||||
centerDigits: 345,
|
||||
ir: 11,
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
expert: {
|
||||
decision: {
|
||||
guiltyPartyId: "guilty-user-id",
|
||||
description: "مقصر شناخته شد",
|
||||
fields: {
|
||||
accidentWay: { label: "از جلو" },
|
||||
accidentReason: { label: "عدم رعایت فاصله" },
|
||||
accidentType: { label: "برخورد" },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
claim: {
|
||||
claimStatus: "APPROVED",
|
||||
claimNo: 111,
|
||||
claimId: 222,
|
||||
dmgCaseId: 333,
|
||||
expertiseId: 444,
|
||||
owner: { fullName: "زیان دیده نمونه" },
|
||||
vehicle: {
|
||||
carName: "207",
|
||||
carModel: "1402",
|
||||
carType: "sedan",
|
||||
},
|
||||
fanavaranSync: {
|
||||
baseClaim: {
|
||||
policyId: 555,
|
||||
driverId: 666,
|
||||
vehicleKindId: 777,
|
||||
insuranceCorpId: 888,
|
||||
},
|
||||
},
|
||||
evaluation: {
|
||||
damageExpertReplyFinal: {
|
||||
submittedAt: evaluationSubmittedAt,
|
||||
description: "نیاز به تعویض سپر جلو",
|
||||
actorDetail: { actorName: "کارشناس خسارت نمونه" },
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
expect(getFieldValue(report, PR.damagedThirdPartyInsuranceSection, PR.policyNumber)).toBe(
|
||||
"TP-DAMAGED-001",
|
||||
);
|
||||
expect(getFieldValue(report, PR.guiltyThirdPartyInsuranceSection, PR.policyNumber)).toBe(
|
||||
"TP-GUILTY-001",
|
||||
);
|
||||
expect(getFieldValue(report, PR.damagedCarBodyInsuranceSection, PR.policyNumber)).toBe(
|
||||
"CB-DAMAGED-001",
|
||||
);
|
||||
expect(getFieldValue(report, PR.guiltyCarBodyInsuranceSection, PR.policyNumber)).toBe(
|
||||
"CB-GUILTY-001",
|
||||
);
|
||||
|
||||
expect(getFieldValue(report, PR.fanavaranSection, PR.fanavaranClaimNo)).toBe(
|
||||
"111",
|
||||
);
|
||||
expect(
|
||||
getFieldValue(report, PR.fanavaranSection, PR.fanavaranExpertiseId),
|
||||
).toBe("444");
|
||||
expect(getFieldValue(report, PR.fanavaranSection, PR.fanavaranPolicyId)).toBe(
|
||||
"555",
|
||||
);
|
||||
|
||||
expect(getFieldValue(report, PR.timelineSection, PR.fileRegisteredAt)).toBe(
|
||||
`${fileDate} ${fileTime}`,
|
||||
);
|
||||
expect(
|
||||
getFieldValue(report, PR.timelineSection, PR.evaluationRegisteredAt),
|
||||
).toBe(`${evaluationDate} ${evaluationTime}`);
|
||||
|
||||
expect(getFieldValue(report, PR.evaluationSection, PR.evaluationResult)).toBe(
|
||||
"تأیید شده",
|
||||
);
|
||||
expect(getFieldValue(report, PR.evaluationSection, PR.evaluationExpert)).toBe(
|
||||
"کارشناس خسارت نمونه",
|
||||
);
|
||||
expect(getFieldValue(report, PR.evaluationSection, PR.evaluationResponse)).toBe(
|
||||
"نیاز به تعویض سپر جلو",
|
||||
);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user