import { describe, it, expect, vi } from "vitest"; vi.mock("server-only", () => ({})); // payouts.ts importe prisma qui jette si DATABASE_URL absent — mock le module entier. vi.mock("@/lib/prisma", () => ({ prisma: {} })); const { monthKey, formatMonth } = await import("@/lib/payouts"); describe("monthKey", () => { it("normalise à minuit UTC du 1er du mois", () => { const k = monthKey(new Date("2026-03-15T14:30:00Z")); expect(k.getUTCFullYear()).toBe(2026); expect(k.getUTCMonth()).toBe(2); // mars = 2 (0-indexed) expect(k.getUTCDate()).toBe(1); expect(k.getUTCHours()).toBe(0); expect(k.getUTCMinutes()).toBe(0); }); it("idempotent (mêmes inputs → même sortie)", () => { const a = monthKey(new Date("2026-06-30T23:59:59Z")); const b = monthKey(new Date("2026-06-01T00:00:00Z")); expect(a.getTime()).toBe(b.getTime()); }); it("traverse janvier sans bug", () => { const k = monthKey(new Date("2026-01-15T10:00:00Z")); expect(k.toISOString().slice(0, 10)).toBe("2026-01-01"); }); }); describe("formatMonth", () => { it("rend un libellé fr-FR lisible", () => { const label = formatMonth(new Date(Date.UTC(2026, 5, 1))); expect(label).toContain("juin"); expect(label).toContain("2026"); }); });