forked from Yara724/api
234 lines
7.9 KiB
TypeScript
234 lines
7.9 KiB
TypeScript
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",
|
|
nationalCodeOfInsurer: "0987654321",
|
|
insurerBirthday: 13650115,
|
|
clientId: "client-guilty",
|
|
},
|
|
statement: {
|
|
admitsGuilt: true,
|
|
acceptsExpertOpinion: true,
|
|
description: "توضیحات مقصر",
|
|
},
|
|
vehicle: {
|
|
carName: "206",
|
|
carModel: "1401",
|
|
plate: {
|
|
leftDigits: 98,
|
|
centerAlphabet: "ج",
|
|
centerDigits: 765,
|
|
ir: 22,
|
|
},
|
|
},
|
|
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,
|
|
acceptsExpertOpinion: false,
|
|
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.ownerSection, PR.name)).toBe("زیان دیده نمونه");
|
|
expect(getFieldValue(report, PR.guiltyOwnerSection, PR.name)).toBe("مقصر نمونه");
|
|
expect(getFieldValue(report, PR.guiltyOwnerSection, PR.phone)).toBe("09120000000");
|
|
expect(getFieldValue(report, PR.guiltyOwnerSection, PR.nationalCode)).toBe(
|
|
"0987654321",
|
|
);
|
|
|
|
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.damagedVehicleSection, "خودرو / نام خودرو")).toBe(
|
|
"207",
|
|
);
|
|
expect(getFieldValue(report, PR.guiltyVehicleSection, "خودرو / نام خودرو")).toBe(
|
|
"206",
|
|
);
|
|
|
|
expect(getFieldValue(report, PR.damagedStatementSection, PR.partyDescription)).toBe(
|
|
"توضیحات زیاندیده",
|
|
);
|
|
expect(getFieldValue(report, PR.damagedStatementSection, PR.claimsDamage)).toBe(
|
|
"بله",
|
|
);
|
|
expect(
|
|
getFieldValue(report, PR.damagedStatementSection, PR.acceptsExpertOpinion),
|
|
).toBe("خیر");
|
|
expect(getFieldValue(report, PR.guiltyStatementSection, PR.partyDescription)).toBe(
|
|
"توضیحات مقصر",
|
|
);
|
|
expect(getFieldValue(report, PR.guiltyStatementSection, PR.admitsGuilt)).toBe(
|
|
"بله",
|
|
);
|
|
expect(
|
|
getFieldValue(report, PR.guiltyStatementSection, PR.acceptsExpertOpinion),
|
|
).toBe("بله");
|
|
|
|
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(
|
|
"نیاز به تعویض سپر جلو",
|
|
);
|
|
});
|
|
});
|