Files
yara724-api/src/claim-request-management/fanavaran-driver-inquiry.spec.ts

113 lines
2.8 KiB
TypeScript

import {
asPartyInquiryRows,
collectPersonNationalCodes,
parseJalaliDateParts,
pickPersonBirthday,
pickPersonNationalCode,
selectFanavaranDriverId,
selectFanavaranOwnerId,
} from "./fanavaran-driver-inquiry";
describe("selectFanavaranDriverId", () => {
const rows = [
{ Id: 10, RoleId: 161, Name: "insurer" },
{ Id: 20, RoleId: 166, Name: "driver" },
];
it("prefers insurer role 161 when the driver is the owner", () => {
expect(selectFanavaranDriverId(rows, true)).toBe(10);
});
it("prefers driver role 166 when the driver is not the owner", () => {
expect(selectFanavaranDriverId(rows, false)).toBe(20);
});
it("falls back to 166 when preferred 161 is missing", () => {
expect(selectFanavaranDriverId([{ Id: 20, RoleId: 166 }], true)).toBe(20);
});
it("returns null for RoleId 162 (بیمه‌شده) — GEN.44 required", () => {
expect(
selectFanavaranDriverId(
[
{
Id: 2390312,
RoleId: 162,
Name: "محمدعلي",
LastName: "موسوي",
},
],
false,
),
).toBeNull();
});
it("does not fall back to RoleId 163 for DriverId", () => {
expect(
selectFanavaranDriverId([{ Id: 99, RoleId: 163 }], false),
).toBeNull();
});
it("picks 4773521 from a real Fanavaran unique-identifier response", () => {
expect(
selectFanavaranDriverId(
[
{ Id: 4773521, RoleId: 161 },
{ Id: 4773521, RoleId: 163 },
{ Id: 4773521, RoleId: 166 },
],
true,
),
).toBe(4773521);
});
});
describe("selectFanavaranOwnerId", () => {
it("accepts only RoleId 161 or 166", () => {
expect(
selectFanavaranOwnerId([
{ Id: 1, RoleId: 162 },
{ Id: 2, RoleId: 163 },
]),
).toBeNull();
expect(selectFanavaranOwnerId([{ Id: 10, RoleId: 161 }])).toBe(10);
expect(selectFanavaranOwnerId([{ Id: 20, RoleId: 166 }])).toBe(20);
});
});
describe("pickPersonNationalCode / birthday", () => {
it("uses insurer national code when driverIsInsurer", () => {
expect(
pickPersonNationalCode({
driverIsInsurer: true,
nationalCodeOfInsurer: "0012345678",
nationalCodeOfDriver: "",
}),
).toBe("0012345678");
});
it("falls back across birthday fields", () => {
expect(
pickPersonBirthday({
driverBirthday: null,
birthday: "13480313",
}),
).toBe("13480313");
});
});
describe("asPartyInquiryRows", () => {
it("normalizes Persian digits and compact insurer birthday 13640628", () => {
expect(
collectPersonNationalCodes({
nationalCodeOfInsurer: "۰۰۸۰۰۸۶۵۱۹",
}),
).toEqual(["0080086519"]);
expect(parseJalaliDateParts(13640628)).toEqual({
year: 1364,
month: 6,
day: 28,
});
});
});