UNPKG

zod-error

Version:

Utilities to format and customize Zod error messages

27 lines (26 loc) 2.39 kB
"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 😵`));