Tune async validation hooks
This commit is contained in:
parent
c96cf9f248
commit
d7fbf1a575
|
@ -112,7 +112,8 @@ Validatable.prototype.isValid = function (callback) {
|
|||
value: new Errors
|
||||
});
|
||||
|
||||
this.trigger('validation', function () {
|
||||
this.trigger('validation', function (validationsDone) {
|
||||
var inst = this;
|
||||
this.constructor._validations.forEach(function (v) {
|
||||
if (v[2] && v[2].async) {
|
||||
valid = false;
|
||||
|
@ -124,16 +125,20 @@ Validatable.prototype.isValid = function (callback) {
|
|||
valid = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
var asyncFail = false;
|
||||
function done(fail) {
|
||||
asyncFail = asyncFail || fail;
|
||||
if (--wait === 0 && callback) {
|
||||
callback(!asyncFail);
|
||||
});
|
||||
|
||||
var asyncFail = false;
|
||||
function done(fail) {
|
||||
asyncFail = asyncFail || fail;
|
||||
if (--wait === 0 && callback) {
|
||||
validationsDone.call(inst, function () {
|
||||
callback(!asyncFail);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
if (valid) cleanErrors(this);
|
||||
if (!async && callback) callback(valid);
|
||||
|
|
|
@ -263,7 +263,7 @@ it 'should validate asynchronously', (test) ->
|
|||
|
||||
it 'should validate uniqueness', (test) ->
|
||||
User.validatesUniquenessOf 'email'
|
||||
User.create getValidAttributes(), ->
|
||||
User.create getValidAttributes(), (err, user) ->
|
||||
user = new User getValidAttributes()
|
||||
|
||||
# test.ok not user.isValid(), 'not valid because async validation'
|
||||
|
|
Loading…
Reference in New Issue