import { describe, it, expect } from "vitest";
import { stedenbouwExtractors } from "./stedenbouwkundige-inlichtingen";
import type { Brondocument, GeextraheerdeWaarneming } from "../perceptie";

// ── AUT-S1 · Extractor: stedenbouwkundige inlichtingen ───────────────────────

const extractor = stedenbouwExtractors[0].extractor;
const doc = (tekst: string): Brondocument => ({ ref: "stb.pdf", bronType: "stedenbouwkundige-inlichtingen", tekst });
const veld = (ws: GeextraheerdeWaarneming[], p: string) => ws.find((w) => w.veldpad === p);

const TEKST = `STEDENBOUWKUNDIGE INLICHTINGEN
Gemeente Tervuren
Datum uittreksel: 20/02/2026
Ruimtelijke bestemming: woongebied
Stedenbouwkundige vergunning: verleend dd. 10/05/1998 voor een woning`;

describe("stedenbouwExtractor", () => {
  it("is geregistreerd voor het brontype stedenbouwkundige-inlichtingen", () => {
    expect(stedenbouwExtractors[0].bronType).toBe("stedenbouwkundige-inlichtingen");
  });

  it("leest bestemming, vergunning en datum", () => {
    const ws = extractor(doc(TEKST));
    expect(veld(ws, "attesten.stedenbouw.bestemming")?.waarde).toBe("woongebied");
    expect(veld(ws, "attesten.stedenbouw.vergunningen")?.waarde).toContain("woning");
    expect(veld(ws, "attesten.stedenbouw.datum")).toMatchObject({ waarde: "2026-02-20", zekerheid: "zeker" });
  });

  it("gokt niets bij lege tekst", () => {
    expect(extractor(doc(""))).toEqual([]);
  });
});
