shoc-frontend-new/src/test/domain/work-orders/utils/due-date-floor.test.ts
2026-09-16 13:32:44 -03:00

29 lines
1.4 KiB
TypeScript

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({});
});
});