import { describe, it, expect } from "vitest";
import { berekenAangiftetermijn, AANGIFTETERMIJN_MAANDEN } from "./aangiftetermijn";

// ── Punt 39 (deel) · Aangiftetermijn erfbelasting ────────────────────────────

describe("berekenAangiftetermijn — VCF 4/5/6 maanden", () => {
  it("hanteert 4 maanden bij overlijden in België", () => {
    const t = berekenAangiftetermijn("2026-01-15", "belgie", "2026-02-01");
    expect(t?.maanden).toBe(4);
    expect(t?.vervaldatum).toBe("2026-05-15");
    expect(t?.status).toBe("ok");
    expect(t?.dagenResterend).toBeGreaterThan(0);
  });

  it("hanteert 5 maanden binnen de EER en 6 daarbuiten", () => {
    expect(berekenAangiftetermijn("2026-01-15", "eer", "2026-02-01")?.vervaldatum).toBe("2026-06-15");
    expect(berekenAangiftetermijn("2026-01-15", "buiten-eer", "2026-02-01")?.vervaldatum).toBe("2026-07-15");
    expect(AANGIFTETERMIJN_MAANDEN).toEqual({ belgie: 4, eer: 5, "buiten-eer": 6 });
  });

  it("markeert een verstreken termijn (vervaltermijn — belastingverhoging)", () => {
    const t = berekenAangiftetermijn("2025-01-15", "belgie", "2026-02-01");
    expect(t?.status).toBe("verstreken");
    expect(t?.dagenResterend).toBeLessThan(0);
  });

  it("markeert een naderende vervaldag als 'nabij'", () => {
    const t = berekenAangiftetermijn("2026-01-15", "belgie", "2026-05-10");
    expect(t?.status).toBe("nabij");
  });

  it("draagt een herleidbare grondslag met wetsartikel", () => {
    const t = berekenAangiftetermijn("2026-01-15", "belgie", "2026-02-01");
    expect(t?.grondslag).toContain("VCF art. 3.3.1.0.5");
    expect(t?.grondslag).toContain("4 maanden");
  });

  it("gokt niets bij een ongeldige datum", () => {
    expect(berekenAangiftetermijn("15/01/2026", "belgie", "2026-02-01")).toBeNull();
    expect(berekenAangiftetermijn("2026-01-15", "belgie", "geen-datum")).toBeNull();
  });
});
