mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-19 19:11:13 +00:00
feat: Add fork of json-schema-to-zod (no-changelog) (#11228)
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { parseString } from '../../src/parsers/parse-string';
|
||||
|
||||
describe('parseString', () => {
|
||||
const run = (schema: z.ZodString, data: unknown) => schema.safeParse(data);
|
||||
|
||||
test('DateTime format', () => {
|
||||
const datetime = '2018-11-13T20:20:39Z';
|
||||
|
||||
const code = parseString({
|
||||
type: 'string',
|
||||
format: 'date-time',
|
||||
errorMessage: { format: 'hello' },
|
||||
});
|
||||
|
||||
expect(code).toMatchZod(z.string().datetime({ offset: true, message: 'hello' }));
|
||||
|
||||
expect(run(code, datetime)).toEqual({ success: true, data: datetime });
|
||||
});
|
||||
|
||||
test('email', () => {
|
||||
expect(
|
||||
parseString({
|
||||
type: 'string',
|
||||
format: 'email',
|
||||
}),
|
||||
).toMatchZod(z.string().email());
|
||||
});
|
||||
|
||||
test('ip', () => {
|
||||
expect(
|
||||
parseString({
|
||||
type: 'string',
|
||||
format: 'ip',
|
||||
}),
|
||||
).toMatchZod(z.string().ip());
|
||||
|
||||
expect(
|
||||
parseString({
|
||||
type: 'string',
|
||||
format: 'ipv6',
|
||||
}),
|
||||
).toMatchZod(z.string().ip({ version: 'v6' }));
|
||||
});
|
||||
|
||||
test('uri', () => {
|
||||
expect(
|
||||
parseString({
|
||||
type: 'string',
|
||||
format: 'uri',
|
||||
}),
|
||||
).toMatchZod(z.string().url());
|
||||
});
|
||||
|
||||
test('uuid', () => {
|
||||
expect(
|
||||
parseString({
|
||||
type: 'string',
|
||||
format: 'uuid',
|
||||
}),
|
||||
).toMatchZod(z.string().uuid());
|
||||
});
|
||||
|
||||
test('time', () => {
|
||||
expect(
|
||||
parseString({
|
||||
type: 'string',
|
||||
format: 'time',
|
||||
}),
|
||||
).toMatchZod(z.string().time());
|
||||
});
|
||||
|
||||
test('date', () => {
|
||||
expect(
|
||||
parseString({
|
||||
type: 'string',
|
||||
format: 'date',
|
||||
}),
|
||||
).toMatchZod(z.string().date());
|
||||
});
|
||||
|
||||
test('duration', () => {
|
||||
expect(
|
||||
parseString({
|
||||
type: 'string',
|
||||
format: 'duration',
|
||||
}),
|
||||
).toMatchZod(z.string().duration());
|
||||
});
|
||||
|
||||
test('base64', () => {
|
||||
expect(
|
||||
parseString({
|
||||
type: 'string',
|
||||
contentEncoding: 'base64',
|
||||
}),
|
||||
).toMatchZod(z.string().base64());
|
||||
|
||||
expect(
|
||||
parseString({
|
||||
type: 'string',
|
||||
contentEncoding: 'base64',
|
||||
errorMessage: {
|
||||
contentEncoding: 'x',
|
||||
},
|
||||
}),
|
||||
).toMatchZod(z.string().base64('x'));
|
||||
|
||||
expect(
|
||||
parseString({
|
||||
type: 'string',
|
||||
format: 'binary',
|
||||
}),
|
||||
).toMatchZod(z.string().base64());
|
||||
|
||||
expect(
|
||||
parseString({
|
||||
type: 'string',
|
||||
format: 'binary',
|
||||
errorMessage: {
|
||||
format: 'x',
|
||||
},
|
||||
}),
|
||||
).toMatchZod(z.string().base64('x'));
|
||||
});
|
||||
|
||||
test('should accept errorMessage', () => {
|
||||
expect(
|
||||
parseString({
|
||||
type: 'string',
|
||||
format: 'ipv4',
|
||||
pattern: 'x',
|
||||
minLength: 1,
|
||||
maxLength: 2,
|
||||
errorMessage: {
|
||||
format: 'ayy',
|
||||
pattern: 'lmao',
|
||||
minLength: 'deez',
|
||||
maxLength: 'nuts',
|
||||
},
|
||||
}),
|
||||
).toMatchZod(
|
||||
z
|
||||
.string()
|
||||
.ip({ version: 'v4', message: 'ayy' })
|
||||
.regex(new RegExp('x'), 'lmao')
|
||||
.min(1, 'deez')
|
||||
.max(2, 'nuts'),
|
||||
);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user