import { describe, expect, it } from "vitest";
import { ApiError, parseProblem } from "./api-error";

describe("parseProblem", () => {
  it("construit une ApiError depuis un Problem Details", async () => {
    const res = new Response(
      JSON.stringify({ status: 404, title: "Not Found", detail: "Site inconnu" }),
      {
        status: 404,
        headers: { "content-type": "application/problem+json" },
      },
    );
    const err = await parseProblem(res);
    expect(err).toBeInstanceOf(ApiError);
    expect(err.status).toBe(404);
    expect(err.title).toBe("Not Found");
    expect(err.detail).toBe("Site inconnu");
  });

  it("tolère une réponse sans corps JSON", async () => {
    const err = await parseProblem(new Response("boom", { status: 502 }));
    expect(err.status).toBe(502);
    expect(err.title).toBe("Bad Gateway");
  });
});
