import { describe, expect, it } from "vitest"; import { computeIsAddOnAtCreation, getAddonCutoffIso, previewIsAddOnFromCutoff, resolveIsAddOnForCreate, } from "@/domain/work-orders/utils/wo-addon-cutoff"; describe("getAddonCutoffIso", () => { it("returns Saturday of the week prior to the scheduled week", () => { // Week of Mon 2026-07-06 → prior Saturday 2026-07-04 expect(getAddonCutoffIso("2026-07-08")).toBe("2026-07-04"); expect(getAddonCutoffIso("2026-07-06")).toBe("2026-07-04"); expect(getAddonCutoffIso("2026-07-10")).toBe("2026-07-04"); }); it("returns null for missing or invalid scheduledOn", () => { expect(getAddonCutoffIso("")).toBeNull(); expect(getAddonCutoffIso("not-a-date")).toBeNull(); }); }); describe("previewIsAddOnFromCutoff", () => { it("returns true when created after prior-Saturday 23:59", () => { expect( previewIsAddOnFromCutoff({ createdAt: "2026-07-05T00:00:00", scheduledOn: "2026-07-08", }), ).toBe(true); }); it("returns false when created on or before prior-Saturday 23:59", () => { expect( previewIsAddOnFromCutoff({ createdAt: "2026-07-04T23:59:59", scheduledOn: "2026-07-08", }), ).toBe(false); expect( previewIsAddOnFromCutoff({ createdAt: "2026-07-03T12:00:00", scheduledOn: "2026-07-08", }), ).toBe(false); }); it("returns null when scheduledOn is missing", () => { expect( previewIsAddOnFromCutoff({ createdAt: new Date("2026-07-05T12:00:00"), scheduledOn: "", }), ).toBeNull(); }); it("keeps computeIsAddOnAtCreation as a deprecated alias", () => { expect(computeIsAddOnAtCreation).toBe(previewIsAddOnFromCutoff); }); }); describe("resolveIsAddOnForCreate", () => { it("uses cutoff preview when scheduledOn is set", () => { expect( resolveIsAddOnForCreate({ createdAt: "2026-07-05T00:00:00", scheduledOn: "2026-07-08", manualOverride: false, }), ).toBe(true); }); it("uses manual override when scheduledOn is missing", () => { expect( resolveIsAddOnForCreate({ scheduledOn: "", manualOverride: true, }), ).toBe(true); expect( resolveIsAddOnForCreate({ scheduledOn: "", manualOverride: false, }), ).toBe(false); }); });