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

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

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

const TEKST = `BERICHT VAN DE SYNDICUS
Residentie De Linde
Kavel nummer: 3/A
Gewone lasten per trimester: 450,00 EUR
Aandeel in de gemene delen: 125/1000
Datum bericht: 05/03/2026`;

describe("syndicusExtractor", () => {
  it("is geregistreerd voor het brontype syndicusafrekening", () => {
    expect(syndicusExtractors[0].bronType).toBe("syndicusafrekening");
  });

  it("leest kavel, lasten, aandeel en datum", () => {
    const ws = extractor(doc(TEKST));
    expect(veld(ws, "medeEigendom.nummerKavel")?.waarde).toBe("3/A");
    expect(veld(ws, "medeEigendom.lastenPerTrimester")?.waarde).toBe(450);
    expect(veld(ws, "medeEigendom.aandeelGemeneDelen")?.waarde).toBe("125/1000");
    expect(veld(ws, "medeEigendom.datumBerichtSyndicus")).toMatchObject({ waarde: "2026-03-05", zekerheid: "zeker" });
  });

  it("gokt de betwisting van de lasten niet", () => {
    const ws = extractor(doc(TEKST));
    expect(ws.some((w) => w.veldpad.includes("Betwist"))).toBe(false);
  });
});
