53 lines
1.7 KiB
TypeScript
53 lines
1.7 KiB
TypeScript
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");
|
|
});
|
|
});
|