import { describe, expect, it } from "vitest"; import { fillDailySeries, mergeRiskActivity } from "./admin-metrics"; describe("admin dashboard metrics", () => { it("fills missing UTC registration days with zero", () => { expect(fillDailySeries( [{ day: "2026-07-30", count: 2 }, { day: "2026-08-01", count: 1 }], new Date("2026-08-01T22:00:00Z"), 3, )).toEqual([ { day: "2026-07-30", count: 2 }, { day: "2026-07-31", count: 0 }, { day: "2026-08-01", count: 1 }, ]); }); it("merges complete per-user VPN summaries with each user's latest observation", () => { const latest = [ { userId: "user-2", classification: "tor", observedAt: new Date("2026-08-01T11:00:00Z") }, { userId: "user-1", classification: "proxy", observedAt: new Date("2026-08-01T12:00:00Z") }, ]; const summaries = [ { userId: "user-1", count: 2000, classifications: ["proxy", "vpn"], sources: ["game", "web"] }, { userId: "user-2", count: 1, classifications: ["tor"], sources: ["web"] }, ]; expect(mergeRiskActivity(latest, summaries)).toEqual([ expect.objectContaining({ userId: "user-1", count: 2000, classification: "proxy", classifications: ["proxy", "vpn"], sources: ["game", "web"] }), expect.objectContaining({ userId: "user-2", count: 1, classification: "tor" }), ]); }); });