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