Files
SnapOtter/tests/unit/api/errors.test.ts
T

37 lines
1.2 KiB
TypeScript
Raw Normal View History

import { describe, expect, it } from "vitest";
import { formatZodErrors } from "../../../apps/api/src/lib/errors.js";
describe("formatZodErrors", () => {
it("formats single issue with path", () => {
const result = formatZodErrors([
{ path: ["width"], message: "Must be positive", code: "custom" },
]);
expect(result).toBe("width: Must be positive");
});
it("formats single issue without path", () => {
const result = formatZodErrors([{ path: [], message: "Invalid input", code: "custom" }]);
expect(result).toBe("Invalid input");
});
it("joins multiple issues with semicolons", () => {
const result = formatZodErrors([
{ path: ["width"], message: "Required", code: "custom" },
{ path: ["height"], message: "Must be positive", code: "custom" },
]);
expect(result).toBe("width: Required; height: Must be positive");
});
it("returns empty string for empty array", () => {
const result = formatZodErrors([]);
expect(result).toBe("");
});
it("joins nested paths with dots", () => {
const result = formatZodErrors([
{ path: ["settings", "quality"], message: "Too high", code: "custom" },
]);
expect(result).toBe("settings.quality: Too high");
});
});