import { describe, it, expect } from "vitest";
import { AKTETYPES, isGekendAkteType } from "./akte-types";
import { seedModellen } from "./modellen";

// ── Register van akteType-namen: uniciteit + dekking van de seed-bibliotheek ─
// `Modeldocument.akteType` is bewust een kale string (gebruikersdata); dit is
// de runtime-bewaking die de seed-laag aan het centrale register bindt.

describe("akteType-register", () => {
  it("bevat geen dubbele namen", () => {
    const dubbels = AKTETYPES.filter((t, i) => AKTETYPES.indexOf(t) !== i);
    expect(dubbels).toEqual([]);
  });

  it("elk seed-model draagt een geregistreerd akteType", () => {
    const onbekend = [...new Set(seedModellen.map((m) => m.akteType))].filter(
      (t) => !isGekendAkteType(t)
    );
    expect(
      onbekend,
      `Deze akteTypes van seed-modellen staan niet in AKTETYPES ` +
        `(data/modeldocumenten/akte-types.ts) — registreer ze daar (één regel), ` +
        `of corrigeer de typo in het model`
    ).toEqual([]);
  });
});
