import { describe, expect, it } from "vitest"; import { evaluateMothershipAccessorialCompat, mothershipAccessorialHasBlock, toggleMothershipAccessorial, } from "@/lib/mothership/option-compat"; describe("toggleMothershipAccessorial", () => { it("禁止提货勾选住宅", () => { const r = toggleMothershipAccessorial({ side: "pickup", selected: ["liftgate"], id: "residential", }); expect(r.applied).toBe(false); expect(r.next).toEqual(["liftgate"]); expect(r.message).toMatch(/不支持住宅/); }); it("预约与 Amazon 预约互斥:勾选后者去掉前者", () => { const r = toggleMothershipAccessorial({ side: "delivery", selected: ["appointment"], id: "fbaAppointment", }); expect(r.applied).toBe(true); expect(r.next).toContain("fbaAppointment"); expect(r.next).not.toContain("appointment"); expect(r.message).toMatch(/不能同时/); }); it("住宅与展会互斥", () => { const r = toggleMothershipAccessorial({ side: "delivery", selected: ["residential"], id: "tradeshow", }); expect(r.next).toEqual(["tradeshow"]); }); }); describe("evaluateMothershipAccessorialCompat", () => { it("提货已含住宅 → block", () => { const issues = evaluateMothershipAccessorialCompat({ side: "pickup", selected: ["residential"], }); expect(mothershipAccessorialHasBlock(issues)).toBe(true); }); it("住宅派送无尾板 → warn", () => { const issues = evaluateMothershipAccessorialCompat({ side: "delivery", selected: ["residential"], }); expect(issues.some((i) => i.code === "ms_residential_need_liftgate")).toBe( true, ); }); });