import { describe, it, expect } from "vitest";
import { POST } from "./route";

function maakRequest(body: unknown): Request {
  return new Request("http://localhost/api/dossier/modelmail-categorieen", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(body),
  });
}

describe("POST /api/dossier/modelmail-categorieen", () => {
  it("geeft de verkoopcategorieën met beschikbare modelbrieven terug", async () => {
    const res = await POST(maakRequest({ dossiertype: "verkoop-met-krediet" }));
    expect(res.status).toBe(200);
    const json = await res.json();
    const categorieen = json.categorieen.map((c: { categorie: string }) => c.categorie);
    expect(categorieen).toContain("verkoop");
    expect(categorieen).toContain("kredietdossier");
    const verkoop = json.categorieen.find((c: { categorie: string }) => c.categorie === "verkoop");
    expect(verkoop.modelbrieven.length).toBeGreaterThan(0);
  });

  it("geeft de testamentcategorie met beschikbare modelbrieven terug", async () => {
    const res = await POST(maakRequest({ dossiertype: "keuzetestament" }));
    const json = await res.json();
    const categorieen = json.categorieen.map((c: { categorie: string }) => c.categorie);
    expect(categorieen).toEqual(["testament"]);
    const testament = json.categorieen.find((c: { categorie: string }) => c.categorie === "testament");
    expect(testament.modelbrieven.length).toBeGreaterThan(0);
  });

  it("geeft 400 bij een ongeldig dossiertype", async () => {
    const res = await POST(maakRequest({ dossiertype: "onbestaand" }));
    expect(res.status).toBe(400);
  });
});
