Merge pull request #253 from anatoliychakkaev/master

Fixes and tests for validation
This commit is contained in:
Anatoliy Chakkaev 2013-04-01 09:11:30 -07:00
commit 18b901df59
3 changed files with 33 additions and 5 deletions

View File

@ -199,6 +199,7 @@ AbstractClass.create = function (data, callback) {
}
}
var obj;
// if we come from save
if (data instanceof Model && !data.id) {

View File

@ -396,11 +396,7 @@ Validatable.prototype.isValid = function (callback, data) {
}, data);
if (!async) {
if (valid) cleanErrors(this);
if (callback) callback(valid);
return valid;
} else {
if (async) {
// in case of async validation we should return undefined here,
// because not all validations are finished yet
return;

View File

@ -47,6 +47,7 @@ describe('validations', function() {
describe('commons', function() {
describe('skipping', function() {
it('should allow to skip using if: attribute', function() {
User.validatesPresenceOf('pendingPeriod', {if: 'createdByAdmin'});
var user = new User;
@ -56,6 +57,36 @@ describe('validations', function() {
user.pendingPeriod = 1
user.isValid().should.be.true;
});
});
describe.only('lifecycle', function() {
it('should work on create', function(done) {
User.validatesPresenceOf('name');
User.create(function(e) {
should.exist(e);
User.create({name: 'Valid'}, function(e, d) {
should.not.exist(e);
done();
});
});
});
it('should work on update', function(done) {
User.validatesPresenceOf('name');
User.create({name: 'Valid'}, function(e, d) {
d.updateAttribute('name', null, function(e) {
should.exist(e);
e.should.be.instanceOf(Error);
d.updateAttribute('name', 'Vasiliy', function(e) {
should.not.exist(e);
done();
});
})
});
});
});
});