Test hooks and object lifecycle as per #242
This commit is contained in:
parent
589887715c
commit
7707b236ff
|
@ -105,7 +105,7 @@ describe('hooks', function() {
|
||||||
it('should save full object', function(done) {
|
it('should save full object', function(done) {
|
||||||
User.create(function(err, user) {
|
User.create(function(err, user) {
|
||||||
User.beforeSave = function(next, data) {
|
User.beforeSave = function(next, data) {
|
||||||
data.toObject().should.have.keys('id', 'name', 'email',
|
data.should.have.keys('id', 'name', 'email',
|
||||||
'password', 'state')
|
'password', 'state')
|
||||||
done();
|
done();
|
||||||
};
|
};
|
||||||
|
@ -207,10 +207,11 @@ describe('hooks', function() {
|
||||||
describe('destroy', function() {
|
describe('destroy', function() {
|
||||||
afterEach(removeHooks('Destroy'));
|
afterEach(removeHooks('Destroy'));
|
||||||
|
|
||||||
it('should be triggered on destroy', function() {
|
it('should be triggered on destroy', function(done) {
|
||||||
var hook = 'not called';
|
var hook = 'not called';
|
||||||
User.beforeDestroy = function() {
|
User.beforeDestroy = function(next) {
|
||||||
hook = 'called';
|
hook = 'called';
|
||||||
|
next();
|
||||||
};
|
};
|
||||||
User.afterDestroy = function() {
|
User.afterDestroy = function() {
|
||||||
hook.should.eql('called');
|
hook.should.eql('called');
|
||||||
|
@ -221,6 +222,96 @@ describe('hooks', function() {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('lifecycle', function() {
|
||||||
|
var life = [], user;
|
||||||
|
before(function(done) {
|
||||||
|
User.beforeSave = function(d){life.push('beforeSave'); d();};
|
||||||
|
User.beforeCreate = function(d){life.push('beforeCreate'); d();};
|
||||||
|
User.beforeUpdate = function(d){life.push('beforeUpdate'); d();};
|
||||||
|
User.beforeDestroy = function(d){life.push('beforeDestroy');d();};
|
||||||
|
User.beforeValidate = function(d){life.push('beforeValidate');d();};
|
||||||
|
User.afterInitialize= function( ){life.push('afterInitialize'); };
|
||||||
|
User.afterSave = function(d){life.push('afterSave'); d();};
|
||||||
|
User.afterCreate = function(d){life.push('afterCreate'); d();};
|
||||||
|
User.afterUpdate = function(d){life.push('afterUpdate'); d();};
|
||||||
|
User.afterDestroy = function(d){life.push('afterDestroy'); d();};
|
||||||
|
User.afterValidate = function(d){life.push('afterValidate');d();};
|
||||||
|
User.create(function(e, u) {
|
||||||
|
user = u;
|
||||||
|
life = [];
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
beforeEach(function() {
|
||||||
|
life = [];
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should describe create sequence', function(done) {
|
||||||
|
User.create(function() {
|
||||||
|
life.should.eql([
|
||||||
|
'afterInitialize',
|
||||||
|
'beforeValidate',
|
||||||
|
'afterValidate',
|
||||||
|
'beforeCreate',
|
||||||
|
'beforeSave',
|
||||||
|
'afterInitialize',
|
||||||
|
'afterSave',
|
||||||
|
'afterCreate'
|
||||||
|
]);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should describe new+save sequence', function(done) {
|
||||||
|
var u = new User;
|
||||||
|
u.save(function() {
|
||||||
|
life.should.eql([
|
||||||
|
'afterInitialize',
|
||||||
|
'beforeValidate',
|
||||||
|
'afterValidate',
|
||||||
|
'beforeCreate',
|
||||||
|
'beforeSave',
|
||||||
|
'afterInitialize',
|
||||||
|
'afterSave',
|
||||||
|
'afterCreate'
|
||||||
|
]);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should describe new+save sequence', function(done) {
|
||||||
|
var u = new User;
|
||||||
|
u.save(function() {
|
||||||
|
life.should.eql([
|
||||||
|
'afterInitialize',
|
||||||
|
'beforeValidate',
|
||||||
|
'afterValidate',
|
||||||
|
'beforeCreate',
|
||||||
|
'beforeSave',
|
||||||
|
'afterInitialize',
|
||||||
|
'afterSave',
|
||||||
|
'afterCreate'
|
||||||
|
]);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should describe updateAttributes sequence', function(done) {
|
||||||
|
user.updateAttributes({name: 'Antony'}, function() {
|
||||||
|
life.should.eql([
|
||||||
|
'beforeValidate',
|
||||||
|
'afterValidate',
|
||||||
|
'beforeSave',
|
||||||
|
'beforeUpdate',
|
||||||
|
'afterUpdate',
|
||||||
|
'afterSave',
|
||||||
|
]);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
function addHooks(name, done) {
|
function addHooks(name, done) {
|
||||||
|
|
Loading…
Reference in New Issue