strapi/packages/strapi-utils/lib/__tests__/yup-formatter.test.js
Alexandre Bodin 07e7cfc0bd Make lint stricter and fix the errors
Signed-off-by: Alexandre Bodin <bodin.alex@gmail.com>
2020-11-02 19:41:42 +01:00

77 lines
1.6 KiB
JavaScript

'use strict';
const yup = require('yup');
const { formatYupErrors } = require('../validators');
describe('Format yup errors', () => {
test('Format single errors', async () => {
expect.hasAssertions();
return yup
.object({
name: yup.string().required('name is required'),
})
.validate({})
.catch(err => {
expect(formatYupErrors(err)).toMatchObject({
name: ['name is required'],
});
});
});
test('Format multiple errors', async () => {
expect.hasAssertions();
return yup
.object({
name: yup
.string()
.min(2, 'min length is 2')
.required(),
})
.validate(
{
name: '1',
},
{
strict: true,
abortEarly: false,
}
)
.catch(err => {
expect(formatYupErrors(err)).toMatchObject({
name: ['min length is 2'],
});
});
});
test('Format multiple errors on multiple keys', async () => {
expect.hasAssertions();
return yup
.object({
name: yup
.string()
.min(2, 'min length is 2')
.typeError('name must be a string')
.required(),
price: yup
.number()
.integer()
.required('price is required'),
})
.validate(
{
name: 12,
},
{
strict: true,
abortEarly: false,
}
)
.catch(err => {
expect(formatYupErrors(err)).toMatchObject({
price: ['price is required'],
name: ['name must be a string'],
});
});
});
});