import { describe, expect, it } from "vitest"; import { parseDashboardDrilldownParams } from "@/domain/work-orders/utils/dashboard-drilldown-params"; import { avetaPendingDrilldownSearch } from "@/domain/dashboard/utils/work-order-drilldown-links"; describe("parseDashboardDrilldownParams", () => { it("returns null when no recognized param is present", () => { expect(parseDashboardDrilldownParams(new URLSearchParams())).toBeNull(); expect( parseDashboardDrilldownParams(new URLSearchParams({ dateFrom: "2026-09-16" })), ).toBeNull(); expect(parseDashboardDrilldownParams(new URLSearchParams({ aveta: "0" }))).toBeNull(); }); it("maps dates to a custom advanced-filter range", () => { const filters = parseDashboardDrilldownParams( new URLSearchParams({ dateFrom: "2026-09-14", dateTo: "2026-09-18" }), ); expect(filters).not.toBeNull(); expect(filters?.dateRange).toBe("custom"); expect(filters?.customFrom).toBe("2026-09-14"); expect(filters?.customTo).toBe("2026-09-18"); }); it("parses the Aveta Pending drilldown and drops unknown statuses", () => { const params = avetaPendingDrilldownSearch("2026-09-16"); params.append("statuses", "NotAStatus"); const filters = parseDashboardDrilldownParams(params); expect(filters).not.toBeNull(); expect(filters?.avetaOnly).toBe(true); // The Aveta drilldown no longer sends `docs=No` (completion-doc status), so // no completion-document filter is applied. expect(filters?.docs.size).toBe(0); expect(filters?.statuses).not.toBeNull(); expect([...(filters?.statuses ?? [])]).not.toContain("Completed"); expect([...(filters?.statuses ?? [])]).not.toContain("NotAStatus"); expect(filters?.statuses.has("Scheduled")).toBe(true); expect(filters?.statuses.has("Pending Quote")).toBe(true); }); it("parses dispatcher and uplift params", () => { const filters = parseDashboardDrilldownParams( new URLSearchParams({ dispatchers: " 12 , 13", upliftStatuses: "pending,bogus", }), ); expect(filters?.dispatchers).toEqual(new Set(["12", "13"])); expect(filters?.hasUplift).toBe(true); expect(filters?.upliftStatuses).toEqual(new Set(["pending"])); }); it("rejects partial or malformed date ranges", () => { expect( parseDashboardDrilldownParams( new URLSearchParams({ dateFrom: "2026-9-16", dateTo: "2026-09-18" }), ), ).toBeNull(); }); });