import { describe, it, expect } from "vitest";
import { vindOnderdeelTegenhanger } from "./onderdeel-taalkeuze";
import type { Modelonderdeel } from "./types";

function maakOnderdeel(over: Partial<Modelonderdeel> & Pick<Modelonderdeel, "id">): Modelonderdeel {
  return {
    titel: over.id,
    categorie: "bijzonder",
    omschrijving: "test",
    tekst: "",
    varianten: [],
    parameters: [],
    toepasbaarOp: ["test"],
    versie: "1.0",
    datum: "2026-01-01",
    ...over,
  };
}

describe("vindOnderdeelTegenhanger", () => {
  it("vindt de FR-vertaling vanuit het NL-onderdeel", () => {
    const nl = maakOnderdeel({ id: "clausule-nl" });
    const fr = maakOnderdeel({ id: "clausule-fr", taal: "fr", vertalingVanId: "clausule-nl" });
    expect(vindOnderdeelTegenhanger(nl, [nl, fr])).toBe(fr);
  });

  it("vindt de NL-bron vanuit het FR-onderdeel (omgekeerde richting)", () => {
    const nl = maakOnderdeel({ id: "clausule-nl" });
    const fr = maakOnderdeel({ id: "clausule-fr", taal: "fr", vertalingVanId: "clausule-nl" });
    expect(vindOnderdeelTegenhanger(fr, [nl, fr])).toBe(nl);
  });

  it("geeft undefined als er geen tegenhanger in de bibliotheek zit", () => {
    const nl = maakOnderdeel({ id: "alleenstaand" });
    expect(vindOnderdeelTegenhanger(nl, [nl])).toBeUndefined();
  });
});
