Files
prowler/ui/lib/date-utils.test.ts
T
2026-04-20 13:34:31 +02:00

36 lines
1.3 KiB
TypeScript

import { format, parseISO } from "date-fns";
import { describe, expect, it } from "vitest";
import { toLocalDateString } from "./date-utils";
describe("toLocalDateString", () => {
it("returns undefined for nullish or empty input", () => {
expect(toLocalDateString(undefined)).toBeUndefined();
expect(toLocalDateString(null)).toBeUndefined();
expect(toLocalDateString("")).toBeUndefined();
});
it("returns undefined for malformed strings", () => {
expect(toLocalDateString("not-a-date")).toBeUndefined();
});
it("returns undefined for invalid Date instances", () => {
expect(toLocalDateString(new Date("not-a-date"))).toBeUndefined();
});
it("formats an ISO string in the user's local timezone", () => {
// Near UTC midnight — the UTC split ("2026-04-19") differs from the local
// date for any tz with a positive offset. We pin parity with date-fns so
// the assertion holds regardless of where CI runs.
const iso = "2026-04-19T23:15:00Z";
const expected = format(parseISO(iso), "yyyy-MM-dd");
expect(toLocalDateString(iso)).toBe(expected);
});
it("formats a Date instance using its local calendar day", () => {
const date = new Date(2026, 3, 20, 10, 0, 0); // April 20, 2026 local
expect(toLocalDateString(date)).toBe("2026-04-20");
});
});