diff --git a/lib/__tests__/validator.test.js b/lib/__tests__/validator.test.js index ace2c7f..6d050d1 100644 --- a/lib/__tests__/validator.test.js +++ b/lib/__tests__/validator.test.js @@ -233,6 +233,55 @@ describe('validate', () => { }).toThrow('Invalid'); }); + test('Valid date validation', () => { + const body = { + name: 'Bob', + message: 'Hi Jim!', + date: '01/02/2004' + }; + + const fields = [ + 'name', + 'message', + 'date' + ]; + + const validation = { + date: 'date' + }; + + const result = validator.validate(body, fields, validation); + + expect(result).toBeObject(); + expect(result).toContainKey('fields'); + expect(result.fields.get('date')).toEqual({ + raw: body.date, + date: new Date(body.date) + }); + }); + + test('Invalid date validation', () => { + const body = { + name: 'Bob', + message: 'Hi Jim!', + date: 'Jeffery' + }; + + const fields = [ + 'name', + 'message', + 'date' + ]; + + const validation = { + date: 'date' + }; + + expect(() => { + validator.validate(body, fields, validation); + }).toThrow('Invalid'); + }); + test('Invalid validation type', () => { const body = { name: 'Bob', diff --git a/lib/validator.js b/lib/validator.js index 17b8288..c4f9e01 100644 --- a/lib/validator.js +++ b/lib/validator.js @@ -83,6 +83,18 @@ function validate(body, fields, validation = {}) { fieldsMap.get(checkOpts[1]) ); break; + case 'date': { + const raw = fieldsMap.get(checkOpts); + const obj = new Date(raw); + + valid = !isNaN(obj.getTime()); + + fieldsMap.set(checkOpts, { + raw: raw, + date: obj + }); + break; + } default: throw new Error('Invalid validation type'); }