import { describe, it, expect } from "vitest";
import { kredietofferteExtractors } from "./kredietofferte";
import type { Brondocument, GeextraheerdeWaarneming } from "../perceptie";

// ── AUT-S1 · Extractor: kredietofferte ───────────────────────────────────────

const extractor = kredietofferteExtractors[0].extractor;
const doc = (tekst: string): Brondocument => ({ ref: "krediet.pdf", bronType: "kredietofferte", tekst });
const veld = (ws: GeextraheerdeWaarneming[], p: string) => ws.find((w) => w.veldpad === p);

const TEKST = `KREDIETAANBOD
Kredietgever: ING België NV
Kredietbedrag: 250.000,00 EUR
Deze offerte werd aanvaard door de kredietnemer.
Geldig gedurende 12 weken.`;

describe("kredietofferteExtractor", () => {
  it("is geregistreerd voor het brontype kredietofferte", () => {
    expect(kredietofferteExtractors[0].bronType).toBe("kredietofferte");
  });

  it("leest bank, bedrag, aanvaarding en termijn", () => {
    const ws = extractor(doc(TEKST));
    expect(veld(ws, "kredietofferte.bank")?.waarde).toBe("ING België NV");
    expect(veld(ws, "kredietofferte.bedrag")).toMatchObject({ waarde: 250000, zekerheid: "zeker" });
    expect(veld(ws, "kredietofferte.aanvaard")?.waarde).toBe(true);
    expect(veld(ws, "kredietofferte.termijnWeken")?.waarde).toBe(12);
  });

  it("gokt de aanvaarding niet bij onduidelijke status", () => {
    const ws = extractor(doc("Kredietbedrag: 250.000 EUR (offerte in behandeling)."));
    expect(veld(ws, "kredietofferte.aanvaard")?.waarde).toBe(false);
    const ws2 = extractor(doc("Kredietbedrag: 250.000 EUR."));
    expect(veld(ws2, "kredietofferte.aanvaard")).toBeUndefined();
  });
});
