-
-
Notifications
You must be signed in to change notification settings - Fork 88
Open
Description
Is it possible to reuse a validation suite multiple times using groups.
The scenario I have is a company details model has 2 different addresses, the validation is the same for each address so rather than duplicating the tests I tried to reuse as below:
import { create, enforce, group, only, test } from 'vest';
export const companyValidationSuite = create(
'companyValidationSuite',
(model, field?) => {
only(field); // if field defined, limit to tests of this field
test('name', 'Name is required', () => {
enforce(model.name).isNotEmpty();
});
group('billingAddress', () =>
companyAddressValidations(model.billingAddress!)
);
group('officeAddress', () =>
companyAddressValidations(model.officeAddress!)
);
}
);
export const companyAddressValidations = (model: any) => {
test('line1', 'Line 1 is required', () => {
enforce(model.line1).isNotEmpty();
});
test('city', 'City is required', () => {
enforce(model.city).isNotEmpty();
});
test('postCode', 'Post Code is required', () => {
enforce(model.postCode).isNotEmpty();
});
};If I then execute the suite as below, it only returns errors for the first group a total of 4 errors but there is 7 errors as both address groups have errors, it shows the field name and groupname in the errors array:
const result = companyValidationSuite({});
console.log(result);If I then supply a value for one of the fields in one of the address (as below), the result is the same number of errors (4) but this time there are 2 errors for the billingAddress group and 1 error for the officeAddress group.
const result = companyValidationSuite({ billingAddress: { line1: 'test' }});
console.log(result);Metadata
Metadata
Assignees
Labels
No labels