import { describe, expect, it } from "vitest"; import { clearDueDateBeforeSchedule, isDueDateBeforeFloor, resolveDueDateFloor, } from "@/domain/work-orders/utils/due-date-floor"; describe("due date floor (SH-356)", () => { it("uses the concrete or range-start Schedule On, else the target week's first day", () => { expect(resolveDueDateFloor({ scheduledOn: "2026-09-10", targetWeek: "" })).toBe("2026-09-10"); expect(resolveDueDateFloor({ scheduledOn: "", targetWeek: "2026-09-14" })).toBe("2026-09-14"); expect(resolveDueDateFloor({ scheduledOn: "", targetWeek: "" })).toBe(""); expect(resolveDueDateFloor({ scheduledOn: null, targetWeek: undefined })).toBe(""); }); it("flags only a Due Date strictly before the floor", () => { expect(isDueDateBeforeFloor("2026-09-09", "2026-09-10")).toBe(true); expect(isDueDateBeforeFloor("2026-09-10", "2026-09-10")).toBe(false); expect(isDueDateBeforeFloor("", "2026-09-10")).toBe(false); expect(isDueDateBeforeFloor("2026-09-09", "")).toBe(false); }); it("clears (never bumps) a Due Date the new schedule passes", () => { expect(clearDueDateBeforeSchedule("2026-09-12", "2026-09-15")).toEqual({ dueDate: "" }); expect(clearDueDateBeforeSchedule("2026-09-12", "2026-09-12")).toEqual({}); expect(clearDueDateBeforeSchedule("2026-09-20", "2026-09-15")).toEqual({}); expect(clearDueDateBeforeSchedule("2026-09-12", "")).toEqual({}); }); });