Files
veridian/tests/tool-errors.test.ts

34 lines
1.4 KiB
TypeScript

import { expect, test } from "bun:test";
import { readStoredToolError, serializeToolError } from "../utils/tool-errors";
const validationError = "Invalid input for tool search: Type validation failed: Value: {\"query\":123}.\nError message: [{\"code\":\"custom\"}]";
test("tool Error instances persist their message, not an empty JSON object", () => {
expect(serializeToolError(new Error(validationError))).toBe(validationError);
expect(serializeToolError(validationError)).toBe(validationError);
expect(serializeToolError({ reason: "invalid input" })).toBe('{"reason":"invalid input"}');
});
test("text validation errors remain text on history replay", () => {
expect(readStoredToolError({ type: "text", value: validationError })).toEqual({
type: "error-text",
value: validationError,
});
});
test("legacy mislabeled JSON errors cannot break subsequent prompts", () => {
expect(readStoredToolError({ type: "json", value: validationError })).toEqual({
type: "error-text",
value: validationError,
});
});
test("preserves actual JSON errors and handles missing errors", () => {
expect(readStoredToolError({ type: "json", value: '{"reason":"bad input"}' })).toEqual({
type: "error-json",
value: { reason: "bad input" },
});
expect(readStoredToolError(null).type).toBe("error-text");
expect(readStoredToolError(undefined).type).toBe("error-text");
});