Files
yara724api/src/helpers/claim-price-drop.spec.ts
2026-05-18 17:14:45 +03:30

84 lines
2.2 KiB
TypeScript

import {
buildCoefficientsFromPartSeverities,
calculateClaimPriceDrop,
resolvePriceDropPartKeyFromDamagePart,
resolveVehicleModelYearFromBlame,
} from "./claim-price-drop";
describe("claim-price-drop", () => {
it("maps catalog segment to price drop key", () => {
expect(
resolvePriceDropPartKeyFromDamagePart({
name: "backfender",
catalogKey: "left_backfender",
}),
).toBe("backFender");
expect(
resolvePriceDropPartKeyFromDamagePart({
name: "hood",
catalogKey: "front_carHood",
}),
).toBe("Hood");
});
it("calculates total from formula", () => {
const r = calculateClaimPriceDrop(400_000_000, 1394, [2, 3]);
expect(r.sumOfSeverity).toBe(5);
expect(r.coefficientYear).toBe(2.1);
expect(r.total).toBe((400_000_000 * 2.1 * 5) / 400);
});
it("reads model year from blame inquiry", () => {
const year = resolveVehicleModelYearFromBlame(
{ owner: { userId: "u1" } },
{
parties: [
{
role: "FIRST",
person: { userId: "u1" },
vehicle: {
inquiry: { mapped: { ModelField: "1395" } },
},
},
],
},
);
expect(year).toBe(1395);
});
it("builds coefficients from expert severities", () => {
const { coefficients, errors } = buildCoefficientsFromPartSeverities(
[
{
id: 1,
name: "backfender",
side: "left",
label_fa: "گلگیر",
catalogKey: "left_backfender",
},
],
[{ partId: 1, severity: "Moderate" }],
);
expect(errors).toHaveLength(0);
expect(coefficients).toEqual([3]);
});
it("accepts numeric catalog id (e.g. 201)", () => {
const { coefficients, errors, lines } = buildCoefficientsFromPartSeverities(
[
{
id: 201,
name: "backfender",
side: "left",
label_fa: "گلگیر عقب (چپ)",
catalogKey: "left_backfender",
},
],
[{ partId: 201, severity: "Moderate" }],
);
expect(errors).toHaveLength(0);
expect(coefficients).toEqual([3]);
expect(lines[0]?.partId).toBe(201);
});
});