mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-09-30 08:03:13 +00:00
88 lines
2.3 KiB
TypeScript
88 lines
2.3 KiB
TypeScript
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);
|
|
});
|
|
});
|