| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- /* @vitest-environment node */
- import { describe, it, expect } from "vitest";
- import {
- normalizeNumericOptions,
- buildExplorerDropdownItems,
- } from "./breadcrumbDropdowns";
- describe("lib/frontend/explorer/breadcrumbDropdowns", () => {
- describe("normalizeNumericOptions", () => {
- it("returns null for non-arrays or empty arrays", () => {
- expect(normalizeNumericOptions(null)).toBe(null);
- expect(normalizeNumericOptions(undefined)).toBe(null);
- expect(normalizeNumericOptions([])).toBe(null);
- });
- it("deduplicates and sorts numeric strings descending", () => {
- expect(normalizeNumericOptions(["1", "10", "2", "2", ""])).toEqual([
- "10",
- "2",
- "1",
- ]);
- });
- });
- describe("buildExplorerDropdownItems", () => {
- it("builds year items only when year is present", () => {
- const res = buildExplorerDropdownItems({
- branch: "NL01",
- year: "2024",
- yearOptions: ["2023", "2024", "2025"],
- });
- expect(res.yearItems?.[0]).toMatchObject({
- value: "2025",
- label: "2025",
- href: "/NL01/2025",
- });
- });
- it("builds month items with German labels", () => {
- const res = buildExplorerDropdownItems({
- branch: "NL01",
- year: "2024",
- month: "10",
- monthOptions: ["01", "10"],
- });
- // October must become "Oktober (10)" per formatter
- expect(res.monthItems?.find((x) => x.value === "10")?.label).toBe(
- "Oktober (10)"
- );
- });
- it("builds day items only when day is present", () => {
- const res = buildExplorerDropdownItems({
- branch: "NL01",
- year: "2024",
- month: "10",
- day: "23",
- dayOptions: ["01", "23"],
- });
- expect(res.dayItems?.find((x) => x.value === "23")?.href).toBe(
- "/NL01/2024/10/23"
- );
- });
- });
- });
|