forked from Yara724/api
84 lines
2.2 KiB
TypeScript
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);
|
|
});
|
|
});
|