forked from Yara724/api
102 lines
3.0 KiB
TypeScript
102 lines
3.0 KiB
TypeScript
import {
|
|
getInquiryErrorMessage,
|
|
isInquiryFailurePayload,
|
|
} from "./inquiry-error";
|
|
|
|
describe("inquiry error messages", () => {
|
|
it("preserves a Persian ESG not-found response", () => {
|
|
expect(
|
|
getInquiryErrorMessage(
|
|
{ success: false, message: "موردی یافت نشد" },
|
|
"thirdPartyPlate",
|
|
),
|
|
).toBe("موردی یافت نشد");
|
|
});
|
|
|
|
it.each([
|
|
["RECORD_NOT_FOUND", "رکوردی یافت نشد", "Provider request failed"],
|
|
[
|
|
"INQUIRY_NO_MATCH",
|
|
"نتیجهای مطابق با اطلاعات وارد شده یافت نشد",
|
|
"Inquiry returned no matching result",
|
|
],
|
|
])(
|
|
"prefers ESG messageFa for %s over the technical message",
|
|
(code, messageFa, message) => {
|
|
expect(
|
|
getInquiryErrorMessage(
|
|
{
|
|
error: {
|
|
code,
|
|
message,
|
|
messageFa,
|
|
providerMessage: message,
|
|
providerCode: code,
|
|
},
|
|
attemptSummary: {
|
|
attempts: [{ code, message, messageFa }],
|
|
},
|
|
},
|
|
"thirdPartyPlate",
|
|
),
|
|
).toBe(messageFa);
|
|
},
|
|
);
|
|
|
|
it("finds messageFa inside an HTTP response envelope", () => {
|
|
expect(
|
|
getInquiryErrorMessage(
|
|
{
|
|
response: {
|
|
status: 404,
|
|
data: {
|
|
error: {
|
|
code: "RECORD_NOT_FOUND",
|
|
message: "Provider request failed",
|
|
messageFa: "رکوردی یافت نشد",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
"thirdPartyPlate",
|
|
),
|
|
).toBe("رکوردی یافت نشد");
|
|
});
|
|
|
|
it("distinguishes VIN and car-body not-found failures", () => {
|
|
expect(getInquiryErrorMessage({ status: 404 }, "thirdPartyVin")).toContain(
|
|
"شماره شاسی (VIN)",
|
|
);
|
|
expect(
|
|
getInquiryErrorMessage(
|
|
new Error("No active policy found"),
|
|
"carBodyPlate",
|
|
),
|
|
).toBe("بیمهنامه بدنه فعالی مطابق پلاک و کد ملی واردشده یافت نشد.");
|
|
});
|
|
|
|
it("preserves a specific Persian provider message", () => {
|
|
expect(
|
|
getInquiryErrorMessage(
|
|
{ message: "کد ملی واردشده صحیح نیست" },
|
|
"personalIdentity",
|
|
),
|
|
).toBe("کد ملی واردشده صحیح نیست");
|
|
});
|
|
|
|
it("does not expose transport or authentication details", () => {
|
|
expect(
|
|
getInquiryErrorMessage(
|
|
{ response: { status: 401 }, message: "ESG authentication failed" },
|
|
"thirdPartyPlate",
|
|
),
|
|
).toBe("سرویس استعلام در دسترس نیست. لطفاً کمی بعد دوباره تلاش کنید.");
|
|
});
|
|
|
|
it("recognizes provider failure envelopes", () => {
|
|
expect(isInquiryFailurePayload({ success: false })).toBe(true);
|
|
expect(isInquiryFailurePayload({ HasError: true })).toBe(true);
|
|
expect(isInquiryFailurePayload({ success: true, data: {} })).toBe(false);
|
|
});
|
|
});
|