zod-error
Version:
Utilities to format and customize Zod error messages
70 lines (69 loc) • 3.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const _1 = require(".");
const issues = [
{
code: 'invalid_type',
expected: 'date',
received: 'string',
path: ['dates', 'purchased'],
message: 'Expected date, received string',
},
{
code: 'invalid_type',
expected: 'date',
received: 'undefined',
path: ['dates', 'fulfilled'],
message: 'Required',
},
{
code: 'invalid_type',
expected: 'string',
received: 'number',
path: ['item'],
message: 'Expected string, received number',
},
{
code: 'invalid_type',
expected: 'number',
received: 'string',
path: ['price'],
message: 'Expected number, received string',
},
];
test('default error message', () => expect((0, _1.getErrorMessage)(issues[0], 0)).toBe('Code: invalid_type ~ Path: dates.purchased ~ Message: Expected date, received string'));
test('error message with code disabled', () => expect((0, _1.getErrorMessage)(issues[0], 0, { code: { enabled: false } })).toBe('Path: dates.purchased ~ Message: Expected date, received string'));
test('error message with message disabled', () => expect((0, _1.getErrorMessage)(issues[0], 0, { message: { enabled: false } })).toBe('Code: invalid_type ~ Path: dates.purchased'));
test('error message with path disabled', () => expect((0, _1.getErrorMessage)(issues[0], 0, { path: { enabled: false } })).toBe('Code: invalid_type ~ Message: Expected date, received string'));
test('error message with a transform function', () => expect((0, _1.getErrorMessage)(issues[0], 0, { transform: ({ index, errorMessage }) => `Error #${index + 1}: ${errorMessage}` })).toBe('Error #1: Code: invalid_type ~ Path: dates.purchased ~ Message: Expected date, received string'));
test('error message with a transform function for each component', () => expect((0, _1.getErrorMessage)(issues[0], 0, {
code: {
enabled: true,
transform: ({ component }) => `<${component}>`,
},
message: {
enabled: true,
transform: ({ component }) => `<${component}>`,
},
path: {
enabled: true,
type: 'objectNotation',
transform: ({ component }) => `<${component}>`,
},
})).toBe('<Code: invalid_type> ~ <Path: dates.purchased> ~ <Message: Expected date, received string>'));
test('component transformations are passed on to final transform', () => expect((0, _1.getErrorMessage)(issues[0], 0, {
code: {
enabled: true,
transform: ({ component }) => `<${component}>`,
},
message: {
enabled: true,
transform: ({ component }) => `<${component}>`,
},
path: {
enabled: true,
type: 'objectNotation',
transform: ({ component }) => `<${component}>`,
},
transform: ({ codeComponent, messageComponent, pathComponent }) => `<${codeComponent}> ~ <${pathComponent}> ~ <${messageComponent}>`,
})).toBe('<<Code: invalid_type>> ~ <<Path: dates.purchased>> ~ <<Message: Expected date, received string>>'));