mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-09-30 09:13:11 +00:00
62 lines
2.4 KiB
TypeScript
62 lines
2.4 KiB
TypeScript
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
import {
|
|
avetaPendingDrilldownSearch,
|
|
scheduledTomorrowDrilldownSearch,
|
|
workOrderDrilldownUrl,
|
|
workOrderRangeDrilldownSearch,
|
|
workOrderStatusDrilldownSearch,
|
|
} from "@/domain/dashboard/utils/work-order-drilldown-links";
|
|
|
|
describe("work-order drilldown links", () => {
|
|
afterEach(() => {
|
|
vi.useRealTimers();
|
|
});
|
|
|
|
it("schedules the tomorrow drilldown on the business clock", () => {
|
|
const search = scheduledTomorrowDrilldownSearch("2026-09-16");
|
|
|
|
expect(search.get("dateFrom")).toBe("2026-09-17");
|
|
expect(search.get("dateTo")).toBe("2026-09-17");
|
|
});
|
|
|
|
it("builds the Aveta Pending drilldown per SH-294", () => {
|
|
const search = avetaPendingDrilldownSearch("2026-09-16");
|
|
const statuses = (search.get("statuses") ?? "").split(",");
|
|
|
|
expect(search.get("dateFrom")).toBe("2026-09-16");
|
|
expect(search.get("dateTo")).toBe("2026-09-17");
|
|
expect(search.get("aveta")).toBe("1");
|
|
// `docs=No` is the completion-document status, not the Aveta document, so it
|
|
// must not be part of the Aveta Pending drilldown (SH-294 / backend#138).
|
|
expect(search.get("docs")).toBeNull();
|
|
expect(statuses).toContain("Scheduled");
|
|
expect(statuses).not.toContain("Completed");
|
|
});
|
|
|
|
it("carries the range into status drilldowns", () => {
|
|
// "today" resolves against the business clock, so pin it (midday EDT on
|
|
// 2026-09-16 → 2026-09-16 in America/New_York) to keep the test deterministic.
|
|
vi.useFakeTimers();
|
|
vi.setSystemTime(new Date("2026-09-16T16:00:00Z"));
|
|
|
|
const search = workOrderStatusDrilldownSearch("Scheduled", "today");
|
|
|
|
expect(search.get("dateFrom")).toBe("2026-09-16");
|
|
expect(search.get("dateTo")).toBe("2026-09-16");
|
|
expect(search.get("statuses")).toBe("Scheduled");
|
|
});
|
|
|
|
it("omits dates for the all-time range", () => {
|
|
expect(workOrderRangeDrilldownSearch("all-time").toString()).toBe("");
|
|
});
|
|
|
|
it("renders plain or query-bearing work order URLs", () => {
|
|
expect(workOrderDrilldownUrl(new URLSearchParams())).toBe("/workorders?fromDashboard=1");
|
|
expect(workOrderDrilldownUrl(new URLSearchParams({ statuses: "Scheduled" }))).toBe(
|
|
"/workorders?statuses=Scheduled&fromDashboard=1",
|
|
);
|
|
expect(
|
|
workOrderDrilldownUrl(new URLSearchParams({ statuses: "Scheduled" }), "notification"),
|
|
).toBe("/workorders?statuses=Scheduled");
|
|
});
|
|
});
|