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