forked from Yara724/api
fanavaran stages matching data is double checked and more controlled +
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
import {
|
||||
canReuseCachedFanavaranVehicleIds,
|
||||
collectPartyVinCandidates,
|
||||
fanavaranIdOrConfigDefault,
|
||||
fanavaranPayloadMatchesDamagedIdentity,
|
||||
fanavaranVehicleMatchesDamagedIdentity,
|
||||
filterPoliciesByLine,
|
||||
insuranceLineLabel,
|
||||
parseLastCarPolicyInput,
|
||||
@@ -10,6 +13,7 @@ import {
|
||||
pickVinFromPartyVehicle,
|
||||
plaqueLetterFromMiddleCode,
|
||||
plaqueMatchesVehicle,
|
||||
selectFanavaranVehicleForDamageCase,
|
||||
selectLastAmongCarMatches,
|
||||
toAppPlaque,
|
||||
vehicleMatchesCar,
|
||||
@@ -311,4 +315,154 @@ describe("fanavaran last car policy", () => {
|
||||
it("returns null when there are no matches", () => {
|
||||
expect(selectLastAmongCarMatches([], today)).toBeNull();
|
||||
});
|
||||
|
||||
const damagedIdentity = {
|
||||
vin: "IRPC941V2BD798656",
|
||||
chassis: "NAS431100E5798656",
|
||||
plaque: { left: "59", letter: "ی", right: "419", serial: "78" },
|
||||
policyCINumber: "16040446424",
|
||||
};
|
||||
|
||||
const culpritVehicle = {
|
||||
Id: 475449,
|
||||
VIN: "IRFC891V7D2301065",
|
||||
ChassisNo: "NAAP41FD5BJ301065",
|
||||
VehicleKindId: 6953,
|
||||
VersionNo: 3,
|
||||
PlaqueKindId: 8,
|
||||
PlaqueSampleId: 10,
|
||||
PlaqueLeftNo: "56",
|
||||
PlaqueMiddleCodeId: 5,
|
||||
PlaqueRightNo: "394",
|
||||
PlaqueSerial: "66",
|
||||
PlaqueNo: "394د56",
|
||||
};
|
||||
|
||||
it("does not treat the culprit vehicle as the damaged car", () => {
|
||||
expect(
|
||||
fanavaranVehicleMatchesDamagedIdentity(culpritVehicle, damagedIdentity),
|
||||
).toBe(false);
|
||||
expect(
|
||||
selectFanavaranVehicleForDamageCase(
|
||||
[
|
||||
culpritVehicle,
|
||||
{ Id: 9, VIN: "OTHER", PlaqueKindId: 15, PlaqueSampleId: 24 },
|
||||
],
|
||||
damagedIdentity,
|
||||
),
|
||||
).toBeNull();
|
||||
});
|
||||
|
||||
it("ignores a PlaqueKindId 15 row that does not share VIN or plate", () => {
|
||||
expect(
|
||||
selectFanavaranVehicleForDamageCase(
|
||||
[
|
||||
{ Id: 1, VIN: "IRPC941V2BD798656" },
|
||||
{
|
||||
Id: 2,
|
||||
VIN: "IRFC901V119493683",
|
||||
PlaqueKindId: 15,
|
||||
PlaqueSampleId: 24,
|
||||
PlaqueLeftNo: "62",
|
||||
PlaqueMiddleCodeId: 14,
|
||||
PlaqueRightNo: "278",
|
||||
PlaqueSerial: "50",
|
||||
},
|
||||
],
|
||||
damagedIdentity,
|
||||
),
|
||||
).toEqual({ Id: 1, VIN: "IRPC941V2BD798656" });
|
||||
});
|
||||
|
||||
it("requires plate agreement when the inquiry row has plaque parts", () => {
|
||||
expect(
|
||||
selectFanavaranVehicleForDamageCase(
|
||||
[
|
||||
{
|
||||
Id: 1,
|
||||
VIN: "IRPC941V2BD798656",
|
||||
PlaqueKindId: 15,
|
||||
PlaqueLeftNo: "56",
|
||||
PlaqueMiddleCodeId: 5,
|
||||
PlaqueRightNo: "394",
|
||||
PlaqueSerial: "66",
|
||||
},
|
||||
],
|
||||
damagedIdentity,
|
||||
),
|
||||
).toBeNull();
|
||||
});
|
||||
|
||||
it("picks the newest matching version of the damaged VIN and plate", () => {
|
||||
expect(
|
||||
selectFanavaranVehicleForDamageCase(
|
||||
[
|
||||
{
|
||||
Id: 10,
|
||||
VIN: "IRPC941V2BD798656",
|
||||
ChassisNo: "NAS431100E5798656",
|
||||
VersionNo: 1,
|
||||
PlaqueKindId: 15,
|
||||
PlaqueSampleId: 24,
|
||||
PlaqueLeftNo: "59",
|
||||
PlaqueMiddleCodeId: 16,
|
||||
PlaqueRightNo: "419",
|
||||
PlaqueSerial: "78",
|
||||
},
|
||||
{
|
||||
Id: 10,
|
||||
VIN: "IRPC941V2BD798656",
|
||||
ChassisNo: "NAS431100E5798656",
|
||||
VersionNo: 3,
|
||||
PlaqueKindId: 8,
|
||||
PlaqueSampleId: 10,
|
||||
PlaqueLeftNo: "59",
|
||||
PlaqueMiddleCodeId: 16,
|
||||
PlaqueRightNo: "419",
|
||||
PlaqueSerial: "78",
|
||||
},
|
||||
],
|
||||
damagedIdentity,
|
||||
)?.PlaqueKindId,
|
||||
).toBe(8);
|
||||
});
|
||||
|
||||
it("rejects cached payload ids from a different VIN, plate, or CI number", () => {
|
||||
expect(
|
||||
fanavaranPayloadMatchesDamagedIdentity(
|
||||
{
|
||||
VIN: "IRFC891V7D2301065",
|
||||
ChassisNo: "NAAP41FD5BJ301065",
|
||||
PolicyCINumber: "16018466143",
|
||||
PlaqueKindId: 8,
|
||||
PlaqueLeftNo: "56",
|
||||
PlaqueMiddleCodeId: 5,
|
||||
PlaqueRightNo: "394",
|
||||
PlaqueSerial: "66",
|
||||
},
|
||||
damagedIdentity,
|
||||
),
|
||||
).toBe(false);
|
||||
expect(canReuseCachedFanavaranVehicleIds("config-default")).toBe(false);
|
||||
expect(canReuseCachedFanavaranVehicleIds("vehicle-inquiry")).toBe(true);
|
||||
expect(canReuseCachedFanavaranVehicleIds(undefined)).toBe(false);
|
||||
});
|
||||
|
||||
it("accepts cache only when VIN, plate, and CI number all agree", () => {
|
||||
expect(
|
||||
fanavaranPayloadMatchesDamagedIdentity(
|
||||
{
|
||||
VIN: "IRPC941V2BD798656",
|
||||
ChassisNo: "NAS431100E5798656",
|
||||
PolicyCINumber: "16040446424",
|
||||
PlaqueLeftNo: "59",
|
||||
PlaqueMiddleCodeId: 16,
|
||||
PlaqueRightNo: "419",
|
||||
PlaqueSerial: "78",
|
||||
PlaqueKindId: 8,
|
||||
},
|
||||
damagedIdentity,
|
||||
),
|
||||
).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user