import { describe, it, expect, beforeEach } from "vitest";
import { GET } from "./route";
import { stelGebruikslogOpslagIn, registreerGebruik, type GebruikslogEvent } from "@/lib/gebruikslog";

class TestOpslag {
  events: GebruikslogEvent[] = [];
  async registreer(event: Omit<GebruikslogEvent, "tijdstip">) {
    this.events.push({ ...event, tijdstip: "2026-06-21T00:00:00.000Z" });
  }
  async lijst() {
    return [...this.events];
  }
}

describe("GET /api/gebruikslog", () => {
  beforeEach(() => {
    stelGebruikslogOpslagIn(new TestOpslag());
  });

  it("geeft aantal, telling per type en de losse events terug", async () => {
    await registreerGebruik({ type: "onbekend_modeldocument", waarde: "x" });
    await registreerGebruik({ type: "onbekend_modeldocument", waarde: "y" });
    await registreerGebruik({ type: "genegeerd_facultatief_onderdeel", waarde: "model:onderdeel" });

    const res = await GET();
    expect(res.status).toBe(200);
    const json = await res.json();
    expect(json.aantal).toBe(3);
    expect(json.perType.onbekend_modeldocument).toBe(2);
    expect(json.perType.genegeerd_facultatief_onderdeel).toBe(1);
    expect(json.events).toHaveLength(3);
  });
});
