import { describe, expect, it } from "vitest"; import { formatDate, formatDateTime } from "@/lib/format"; describe("formatDate", () => { it("formats a Date object with en-US locale", () => { const date = new Date(2025, 0, 15); // Jan 15, 2025 const result = formatDate(date, "en-US"); expect(result).toContain("2025"); expect(result).toContain("15"); expect(result).toContain("Jan"); }); it("formats an ISO date string", () => { const result = formatDate("2024-06-01T00:00:00Z", "en-US"); expect(result).toContain("2024"); expect(result).toContain("Jun"); }); it("handles different locales", () => { const date = new Date(2025, 2, 10); // Mar 10, 2025 const enResult = formatDate(date, "en-US"); const deResult = formatDate(date, "de-DE"); // Both should contain the year, but month formatting may differ expect(enResult).toContain("2025"); expect(deResult).toContain("2025"); }); it("formats end-of-year date correctly", () => { const result = formatDate("2024-12-15T12:00:00Z", "en-US"); expect(result).toContain("Dec"); expect(result).toContain("2024"); }); }); describe("formatDateTime", () => { it("includes both date and time components", () => { const date = new Date(2025, 0, 15, 14, 30); // Jan 15, 2025 at 14:30 const result = formatDateTime(date, "en-US"); expect(result).toContain("2025"); expect(result).toContain("Jan"); expect(result).toContain("15"); // Should contain time portion (format varies by locale) expect(result).toMatch(/\d{1,2}:\d{2}/); }); it("formats an ISO string with time", () => { const result = formatDateTime("2024-07-04T09:15:00Z", "en-US"); expect(result).toContain("2024"); expect(result).toContain("Jul"); expect(result).toMatch(/\d{1,2}:\d{2}/); }); it("handles midnight correctly", () => { const date = new Date(2025, 5, 1, 0, 0); // Jun 1, 2025 00:00 const result = formatDateTime(date, "en-US"); expect(result).toContain("Jun"); expect(result).toContain("2025"); expect(result).toMatch(/\d{1,2}:\d{2}/); }); });