| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- /* @vitest-environment node */
- import { describe, it, expect } from "vitest";
- import {
- normalizeDayClickArgs,
- buildCalendarState,
- } from "./dateRangePickerUtils.js";
- describe("lib/frontend/search/dateRangePickerUtils", () => {
- describe("normalizeDayClickArgs", () => {
- it("supports (day, modifiers) signature", () => {
- const day = new Date(2026, 0, 10);
- const modifiers = { disabled: false };
- const out = normalizeDayClickArgs([day, modifiers]);
- expect(out.day).toBe(day);
- expect(out.modifiers).toBe(modifiers);
- });
- it("supports (event, day, modifiers) signature", () => {
- const day = new Date(2026, 0, 10);
- const modifiers = { disabled: true };
- const out = normalizeDayClickArgs([{}, day, modifiers]);
- expect(out.day).toBe(day);
- expect(out.modifiers).toBe(modifiers);
- });
- it("returns nulls for unknown inputs", () => {
- const out = normalizeDayClickArgs([{}, {}, {}]);
- expect(out).toEqual({ day: null, modifiers: null });
- });
- });
- describe("buildCalendarState", () => {
- it("builds a valid selected range", () => {
- const from = new Date(2026, 0, 1);
- const to = new Date(2026, 0, 5);
- const out = buildCalendarState({
- fromDate: from,
- toDate: to,
- isRangeInvalid: false,
- });
- expect(out.calendarSelected).toEqual({ from, to });
- expect(out.calendarModifiers).toBe(undefined);
- });
- it("builds an invalid interval and modifiers when range is invalid", () => {
- const from = new Date(2026, 0, 10);
- const to = new Date(2026, 0, 5);
- const out = buildCalendarState({
- fromDate: from,
- toDate: to,
- isRangeInvalid: true,
- });
- expect(out.calendarSelected.from <= out.calendarSelected.to).toBe(true);
- expect(out.calendarModifiers).toBeTruthy();
- expect(out.calendarModifiersClassNames).toBeTruthy();
- });
- it("supports open range (from only)", () => {
- const from = new Date(2026, 0, 2);
- const out = buildCalendarState({
- fromDate: from,
- toDate: null,
- isRangeInvalid: false,
- });
- expect(out.calendarSelected).toEqual({ from, to: undefined });
- });
- it("supports to-only (single-day range)", () => {
- const to = new Date(2026, 0, 2);
- const out = buildCalendarState({
- fromDate: null,
- toDate: to,
- isRangeInvalid: false,
- });
- expect(out.calendarSelected).toEqual({ from: to, to });
- });
- });
- });
|