zod-error
Version:
Utilities to format and customize Zod error messages
27 lines (26 loc) • 2.39 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const _1 = require(".");
const zod_1 = require("zod");
var Color;
(function (Color) {
Color["Red"] = "Red";
Color["Blue"] = "Blue";
})(Color || (Color = {}));
const schema = zod_1.z.object({
color: zod_1.z.nativeEnum(Color),
shape: zod_1.z.string(),
size: zod_1.z.number().gt(0),
});
const data = {
color: 'Green',
size: -1,
};
const result = schema.safeParse(data);
const issues = !result.success ? result.error.issues : [];
const now = new Date().valueOf();
test('generating an error message with default options', () => expect((0, _1.generateErrorMessage)(issues)).toBe("Code: invalid_enum_value ~ Path: color ~ Message: Invalid enum value. Expected 'Red' | 'Blue', received 'Green' | Code: invalid_type ~ Path: shape ~ Message: Required | Code: too_small ~ Path: size ~ Message: Number must be greater than 0"));
test('generating an error message with maximum 2 errors', () => expect((0, _1.generateErrorMessage)(issues, { maxErrors: 2 })).toBe("Code: invalid_enum_value ~ Path: color ~ Message: Invalid enum value. Expected 'Red' | 'Blue', received 'Green' | Code: invalid_type ~ Path: shape ~ Message: Required"));
test('generating an error message a error delimiter', () => expect((0, _1.generateErrorMessage)(issues, { delimiter: { error: ' 🔥 ' } })).toBe("Code: invalid_enum_value ~ Path: color ~ Message: Invalid enum value. Expected 'Red' | 'Blue', received 'Green' 🔥 Code: invalid_type ~ Path: shape ~ Message: Required 🔥 Code: too_small ~ Path: size ~ Message: Number must be greater than 0"));
test('generating an error message a custom prefix', () => expect((0, _1.generateErrorMessage)(issues, { prefix: `🕒 ${now}: ` })).toBe(`🕒 ${now}: Code: invalid_enum_value ~ Path: color ~ Message: Invalid enum value. Expected 'Red' | 'Blue', received 'Green' | Code: invalid_type ~ Path: shape ~ Message: Required | Code: too_small ~ Path: size ~ Message: Number must be greater than 0`));
test('generating an error message a custom suffix', () => expect((0, _1.generateErrorMessage)(issues, { suffix: ' 😵' })).toBe(`Code: invalid_enum_value ~ Path: color ~ Message: Invalid enum value. Expected 'Red' | 'Blue', received 'Green' | Code: invalid_type ~ Path: shape ~ Message: Required | Code: too_small ~ Path: size ~ Message: Number must be greater than 0 😵`));