shoc-frontend-new/src/test/domain/dashboard/work-order-drilldown-links.test.ts

49 lines
1.7 KiB
TypeScript
Raw Normal View History

import { describe, expect, it } from "vitest";
import {
avetaPendingDrilldownSearch,
scheduledTomorrowDrilldownSearch,
workOrderDrilldownUrl,
workOrderRangeDrilldownSearch,
workOrderStatusDrilldownSearch,
} from "@/domain/dashboard/utils/work-order-drilldown-links";
describe("work-order drilldown links", () => {
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");
expect(search.get("docs")).toBe("No");
expect(statuses).toContain("Scheduled");
expect(statuses).not.toContain("Completed");
});
it("carries the range into status drilldowns", () => {
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");
expect(workOrderDrilldownUrl(new URLSearchParams({ statuses: "Scheduled" }))).toBe(
"/workorders?statuses=Scheduled",
);
});
});