Fix validations for custom field types (#8297)

Signed-off-by: Sam Williams <spwilliams91@icloud.com>
This commit is contained in:
Sam Williams 2020-10-12 12:59:06 -04:00 committed by GitHub
parent ba9711d134
commit 96a33ed942
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 45 additions and 1 deletions

View File

@ -102,6 +102,25 @@ describe('Entity validator', () => {
});
});
});
it('Supports custom field types', async () => {
const model = {
attributes: {
uuid: {
type: 'uuid',
},
},
};
const input = { uuid: '2479d6d7-2497-478d-8a34-a9e8ce45f8a7' };
expect.hasAssertions();
const data = await entityValidator.validateEntityCreation(model, input);
expect(data).toEqual({
uuid: '2479d6d7-2497-478d-8a34-a9e8ce45f8a7',
});
});
});
describe('String validator', () => {
@ -335,6 +354,25 @@ describe('Entity validator', () => {
);
expect(data).toEqual({ title: null });
});
it('Supports custom field types', async () => {
const model = {
attributes: {
uuid: {
type: 'uuid',
},
},
};
const input = { uuid: '2479d6d7-2497-478d-8a34-a9e8ce45f8a7' };
expect.hasAssertions();
const data = await entityValidator.validateEntityCreation(model, input, { isDraft: true });
expect(data).toEqual({
uuid: '2479d6d7-2497-478d-8a34-a9e8ce45f8a7',
});
});
});
describe('String validator', () => {

View File

@ -126,7 +126,13 @@ const createRelationValidator = createOrUpdate => (attr, data, { isDraft }) => {
const createSimpleAttributeValidator = createOrUpdate => (attr, { isDraft }) => {
let validator;
validator = validators[attr.type](attr, { isDraft });
if (attr.type in validators) {
validator = validators[attr.type](attr, { isDraft });
} else {
// No validators specified - fall back to mixed
validator = yup.mixed();
}
validator = addRequiredValidation(createOrUpdate)(!isDraft && attr.required, validator);
return validator;