cheke
Version:
Express request validator with object's style response body and inspired by Laravel's Validator
75 lines (63 loc) • 2.41 kB
JavaScript
const hasErrors = require('../src/hasErrors');
describe('hasErrors', () => {
test("should return false if you don't provide reqRules", () =>
hasErrors().then(res => {
expect(res).toBeFalsy();
}));
test("should return name's rule can not be empty", () =>
hasErrors({ reqRules: { name: {} } }).catch(err => {
expect(err.message).toBe("name's rule can not be empty");
}));
test("should return name's rule can not be empty", () =>
hasErrors({ reqRules: { name: { type: '' } } }).catch(err => {
expect(err.message).toBe("name's rule can not be empty");
}));
test("should return name's rule can not be empty", () =>
hasErrors({ reqRules: { name: '' } }).catch(err => {
expect(err.message).toBe("name's rule can not be empty");
}));
test('should return The name field is required.', () =>
hasErrors({ reqRules: { name: 'required' } }).then(res => {
expect(res.name.message).toBe('The name field is required.');
}));
test('should return The age must be a number', () =>
hasErrors({
data: { age: '21k' },
reqRules: { age: 'number' },
}).then(res => {
expect(res.age.message).toBe('The age must be a number.');
}));
test('should return The age must be a number', () =>
hasErrors({
data: { age: '21' },
reqRules: { page: 'number' },
}).then(res => {
expect(res.age.message).toBe('age is not allowed.');
}));
test('should return The age must be a number', () =>
hasErrors({
data: { age: 21 },
reqRules: { age: 'number' },
}).then(res => {
expect(res).toBe(false);
}));
describe('object rules', () => {
test('should return The name field is required.', () =>
hasErrors({ reqRules: { name: { label: 'Name', type: 'required' } } }).then(res => {
expect(res.name.message).toBe('The Name field is required.');
}));
test('should return `The age must be a number.`', () =>
hasErrors({
data: { age: 'age' },
reqRules: { age: { label: 'age', type: 'number' } },
}).then(res => {
expect(res.age.message).toBe('The age must be a number.');
}));
});
describe('no required rules', () => {
test('should return false.', () =>
hasErrors({ reqRules: { name: { label: 'Name', type: 'string' } } }).then(res => {
expect(res).toBeFalsy();
}));
});
});