searchDateValidation.test.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /* @vitest-environment node */
  2. import { describe, it, expect } from "vitest";
  3. import { getSearchDateRangeValidation } from "./searchDateValidation.js";
  4. describe("lib/frontend/search/searchDateValidation", () => {
  5. it("returns null when both dates are missing", () => {
  6. expect(getSearchDateRangeValidation(null, null)).toBe(null);
  7. expect(getSearchDateRangeValidation(undefined, undefined)).toBe(null);
  8. });
  9. it("returns VALIDATION_SEARCH_DATE for invalid from", () => {
  10. expect(getSearchDateRangeValidation("2026/01/01", null)).toEqual({
  11. code: "VALIDATION_SEARCH_DATE",
  12. message: "Invalid from date",
  13. details: { from: "2026/01/01" },
  14. });
  15. });
  16. it("returns VALIDATION_SEARCH_DATE for invalid to", () => {
  17. expect(getSearchDateRangeValidation(null, "2026-99-01")).toEqual({
  18. code: "VALIDATION_SEARCH_DATE",
  19. message: "Invalid to date",
  20. details: { to: "2026-99-01" },
  21. });
  22. });
  23. it("returns VALIDATION_SEARCH_RANGE when from > to", () => {
  24. expect(getSearchDateRangeValidation("2026-01-10", "2026-01-09")).toEqual({
  25. code: "VALIDATION_SEARCH_RANGE",
  26. message: "Invalid date range",
  27. details: { from: "2026-01-10", to: "2026-01-09" },
  28. });
  29. });
  30. it("accepts from === to as a valid single-day range", () => {
  31. expect(getSearchDateRangeValidation("2026-01-10", "2026-01-10")).toBe(null);
  32. });
  33. it("accepts open ranges", () => {
  34. expect(getSearchDateRangeValidation("2026-01-10", null)).toBe(null);
  35. expect(getSearchDateRangeValidation(null, "2026-01-10")).toBe(null);
  36. });
  37. it("accepts a valid range", () => {
  38. expect(getSearchDateRangeValidation("2026-01-01", "2026-01-31")).toBe(null);
  39. });
  40. });