import { describe, expect, it } from "vitest"; import { z } from "zod"; import { ClientRequestError, mapErrorToResponse } from "../src/route/error_handler.ts"; describe("error_handler", () => { it("formats ClientRequestError with provided status", () => { const { status, body } = mapErrorToResponse(new ClientRequestError(400, "invalid payload")); expect(status).toBe(400); expect(body).toEqual({ code: 400, message: "BadRequest", detail: "invalid payload", }); }); it("coerces ZodError into a 400 response", () => { const schema = z.object({ foo: z.string() }); const parseResult = schema.safeParse({}); if (parseResult.success) { throw new Error("Expected validation error"); } const { status, body } = mapErrorToResponse(parseResult.error); expect(status).toBe(400); expect(body.code).toBe(400); expect(body.message).toBe("BadRequest"); expect(body.detail).toContain("expected string"); }); it("defaults to 500 for unexpected errors", () => { const { status, body } = mapErrorToResponse(new Error("boom")); expect(status).toBe(500); expect(body).toEqual({ code: 500, message: "Internal Server Error", detail: "boom", }); }); });