import { describe, expect, it } from "vitest"; import { buildBapDetailLocation, getBapReturnLocation, parseBapFilters, } from "../client/src/lib/bapNavigation"; describe("navigation Factures BAP", () => { it("transmet tous les filtres et le tri à la page de détail", () => { const location = buildBapDetailLocation(42, { searchQuery: "microsoft europe", statusFilter: "bap_pending", selectedYear: "2026", selectedMonth: "05", sortField: "invoiceDate", sortDir: "asc", }); expect(location).toBe( "/invoices/42?returnTo=bap&q=microsoft+europe&status=bap_pending&year=2026&month=05&sort=invoiceDate&dir=asc" ); }); it("restaure la liste BAP et les filtres de façon sûre", () => { const detailSearch = "?returnTo=bap&q=microsoft+europe&status=bap_pending&year=2026&month=05&sort=invoiceDate&dir=asc"; expect(getBapReturnLocation(detailSearch)).toBe( "/invoices-bap?q=microsoft+europe&status=bap_pending&year=2026&month=05&sort=invoiceDate&dir=asc" ); expect(parseBapFilters(detailSearch, "2026")).toEqual({ searchQuery: "microsoft europe", statusFilter: "bap_pending", selectedYear: "2026", selectedMonth: "05", sortField: "invoiceDate", sortDir: "asc", }); }); it("retombe sur les valeurs BAP sûres si les paramètres sont absents ou invalides", () => { expect(parseBapFilters("?returnTo=bap&status=invalid&year=x&sort=nope&dir=down", "2026")).toEqual({ searchQuery: "", statusFilter: "all", selectedYear: "2026", selectedMonth: "all", sortField: "createdAt", sortDir: "desc", }); expect(getBapReturnLocation("?returnTo=invoices")).toBe("/invoices"); }); });