import { describe, expect, it } from "vitest"; import { ClientRequestError, error_handler } from "../src/route/error_handler.ts"; import { DocumentBodySchema } from "dbtype"; const createSet = () => ({ status: undefined as number | string | undefined }); describe("error_handler", () => { it("formats ClientRequestError with provided status", () => { const set = createSet(); const result = error_handler({ code: "UNKNOWN", error: new ClientRequestError(400, "invalid payload"), set, }); expect(set.status).toBe(400); expect(result).toEqual({ code: 400, message: "BadRequest", detail: "invalid payload", }); }); it("coerces ZodError into a 400 response", () => { const parseResult = DocumentBodySchema.safeParse({}); const set = createSet(); if (parseResult.success) { throw new Error("Expected validation error"); } const result = error_handler({ code: "VALIDATION", error: parseResult.error, set, }); expect(set.status).toBe(400); expect(result.code).toBe(400); expect(result.message).toBe("BadRequest"); expect(result.detail).toContain("Required"); }); it("defaults to 500 for unexpected errors", () => { const set = createSet(); const result = error_handler({ code: "INTERNAL_SERVER_ERROR", error: new Error("boom"), set, }); expect(set.status).toBe(500); expect(result).toEqual({ code: 500, message: "Internal Server Error", detail: "boom", }); }); });