import { describe, expect, it } from "vitest"; import { filterPickupLocationIds } from "../../app/services/pickup-locations.server"; const candidates = [{ id: "a" }, { id: "b" }, { id: "c" }, { id: "d" }]; describe("filterPickupLocationIds", () => { it("keeps only candidates that both offer PICKUP slots and stock the cart, in candidate order", () => { const result = filterPickupLocationIds({ candidates, pickupTemplateLocationIds: new Set(["a", "b", "c"]), stockedLocationIds: new Set(["b", "c", "d"]), }); expect(result).toEqual(["b", "c"]); }); it("drops a location with no PICKUP slot template even if it's in stock", () => { const result = filterPickupLocationIds({ candidates, pickupTemplateLocationIds: new Set(["a"]), stockedLocationIds: new Set(["a", "b", "c", "d"]), }); expect(result).toEqual(["a"]); }); it("drops a pickup-capable location that stocks none of the cart", () => { const result = filterPickupLocationIds({ candidates, pickupTemplateLocationIds: new Set(["a", "b"]), stockedLocationIds: new Set(["b"]), }); expect(result).toEqual(["b"]); }); it("returns [] when nothing qualifies", () => { expect( filterPickupLocationIds({ candidates, pickupTemplateLocationIds: new Set(["a"]), stockedLocationIds: new Set(["b"]), }), ).toEqual([]); }); it("preserves the candidate ordering (oldest-first) rather than set iteration order", () => { const result = filterPickupLocationIds({ candidates: [{ id: "d" }, { id: "c" }, { id: "b" }, { id: "a" }], pickupTemplateLocationIds: new Set(["a", "b", "c", "d"]), stockedLocationIds: new Set(["a", "b", "c", "d"]), }); expect(result).toEqual(["d", "c", "b", "a"]); }); });