import { describe, expect, it } from "vitest"; import { paymentMethodNamesToHide, DEFAULT_HIDE_PATTERN } from "../../extensions/payment-customization/src/evaluate.js"; const METHODS = ["Credit card", "Shop Pay", "Cash on Delivery (COD)", "Pay in store"]; describe("paymentMethodNamesToHide", () => { it("hides pay-in-person methods on a shipped order", () => { const hidden = paymentMethodNamesToHide({ dd_method: "SHIPPING" }, METHODS); expect(hidden.sort()).toEqual(["Cash on Delivery (COD)", "Pay in store"]); }); it("hides nothing for a pickup order", () => { expect(paymentMethodNamesToHide({ dd_method: "PICKUP" }, METHODS)).toEqual([]); }); it("hides nothing for a local delivery order", () => { expect(paymentMethodNamesToHide({ dd_method: "LOCAL_DELIVERY" }, METHODS)).toEqual([]); }); it("hides nothing when no fulfillment method has been chosen yet", () => { expect(paymentMethodNamesToHide({}, METHODS)).toEqual([]); }); it("leaves ordinary gateways alone even when shipping", () => { const hidden = paymentMethodNamesToHide({ dd_method: "SHIPPING" }, ["Credit card", "Shop Pay", "PayPal"]); expect(hidden).toEqual([]); }); it("accepts a custom pattern", () => { const hidden = paymentMethodNamesToHide({ dd_method: "SHIPPING" }, ["Bank transfer", "Credit card"], { pattern: /bank transfer/i, }); expect(hidden).toEqual(["Bank transfer"]); }); it("matches common COD spellings", () => { for (const name of ["Cash on delivery", "COD", "C.O.D.", "Pay on delivery", "Pay on pickup", "Pay in person"]) { expect(DEFAULT_HIDE_PATTERN.test(name)).toBe(true); } }); });