diff --git a/lib/validations.js b/lib/validations.js index 9c67a6af..48df1122 100644 --- a/lib/validations.js +++ b/lib/validations.js @@ -1,4 +1,6 @@ var util = require('util'); +var extend = util._extend; + /*! * Module exports */ @@ -23,6 +25,18 @@ exports.Validatable = Validatable; function Validatable() { } +Validatable.validations = function() { + var validations = {}; + (this._validations || []).forEach(function(v) { + var key = v[0], validation = v[1], options = v[3]; + var copy = extend({}, validation); + copy.options = options || {}; + validations[key] = validations[key] || []; + validations[key].push(copy); + }); + return validations; +}; + /** * Validate presence of one or more specified properties. * Requires a model to include a property to be considered valid; fails when validated field is blank. diff --git a/test/validations.test.js b/test/validations.test.js index 935a2669..338b156f 100644 --- a/test/validations.test.js +++ b/test/validations.test.js @@ -130,6 +130,14 @@ describe('validations', function () { done(); }); }); + + it('should return validation metadata', function() { + var expected = {name:[{validation: 'presence', options: {}}]}; + delete User._validations; + User.validatesPresenceOf('name'); + var validations = User.validations(); + validations.should.eql(expected); + }); }); });