@hookform/resolvers
Version:
React Hook Form validation resolvers: Yup, Joi, Superstruct, Zod, Vest, Class Validator, io-ts, Nope, computed-types, TypeBox, arktype, Typanion, Effect-TS and VineJS
114 lines (99 loc) • 2.98 kB
text/typescript
import { ataResolver } from '..';
import {
fields,
invalidData,
invalidDataWithUndefined,
schema,
validData,
} from './__fixtures__/data';
const shouldUseNativeValidation = false;
describe('ataResolver', () => {
it('should return values from ataResolver when validation pass', async () => {
expect(
await ataResolver(schema)(validData, undefined, {
fields,
shouldUseNativeValidation,
}),
).toEqual({
values: validData,
errors: {},
});
});
it('should return values from ataResolver when validation pass & raw=true', async () => {
const result = await ataResolver(schema, undefined, { raw: true })(
validData,
undefined,
{
fields,
shouldUseNativeValidation,
},
);
expect(result).toEqual({ errors: {}, values: validData });
});
it('should return single error message from ataResolver when validation fails and validateAllFieldCriteria set to false', async () => {
expect(
await ataResolver(schema)(invalidData, undefined, {
fields,
shouldUseNativeValidation,
}),
).toMatchSnapshot();
});
it('should return all the error messages from ataResolver when validation fails and validateAllFieldCriteria set to true', async () => {
expect(
await ataResolver(schema)(
invalidData,
{},
{ fields, criteriaMode: 'all', shouldUseNativeValidation },
),
).toMatchSnapshot();
});
it('should return all the error messages from ataResolver when requirement fails', async () => {
expect(
await ataResolver(schema)({}, undefined, {
fields,
shouldUseNativeValidation,
}),
).toMatchSnapshot();
});
it('should return all the error messages from ataResolver when some property is undefined', async () => {
expect(
await ataResolver(schema)(invalidDataWithUndefined, undefined, {
fields,
shouldUseNativeValidation,
}),
).toMatchSnapshot();
});
it('should support coerceTypes option', async () => {
const coerceSchema = {
type: 'object',
properties: {
age: { type: 'integer' },
active: { type: 'boolean' },
},
required: ['age', 'active'],
};
const result = await ataResolver(coerceSchema, { coerceTypes: true })(
{ age: '25', active: 'true' },
undefined,
{ fields, shouldUseNativeValidation },
);
expect(result.errors).toEqual({});
});
it('should support removeAdditional option', async () => {
const strictSchema = {
type: 'object',
properties: {
name: { type: 'string' },
},
required: ['name'],
additionalProperties: false,
};
const result = await ataResolver(strictSchema, {
removeAdditional: true,
})({ name: 'test', extra: 'field' }, undefined, {
fields,
shouldUseNativeValidation,
});
expect(result.errors).toEqual({});
});
});