@ -38,6 +38,25 @@ function testThrowInCallback (d, done) {
});
}
// Test that if the callback is falsy, the next DB operations will still be executed
functiontestFalsyCallback(d,done){
d.insert({a:1},null);
process.nextTick(function(){
d.update({a:1},{a:2},{},null);
process.nextTick(function(){
d.update({a:2},{a:1},null);
process.nextTick(function(){
d.remove({a:2},{},null);
process.nextTick(function(){
d.remove({a:2},null);
process.nextTick(function(){
d.find({},done);
});
});
});
});
});
}
// Test that operations are executed in the right order
// We prevent Mocha from catching the exception we throw on purpose by remembering all current handlers, remove them and register them back after test ends
@ -80,8 +99,6 @@ function testRightOrder (d, done) {
});
}
// Note: The following test does not have any assertion because it
// is meant to address the deprecation warning:
// (node) warning: Recursive process.nextTick detected. This will break in the next version of node. Please use setImmediate for recursive deferral.
@ -95,9 +112,20 @@ var testEventLoopStarvation = function(d, done){
});
}
done();
};
};
describe('Executor',function(){
// Test that operations are executed in the right order even with no callback
functiontestExecutorWorksWithoutCallback(d,done){
d.insert({a:1});
d.insert({a:2},false);
d.find({},function(err,docs){
docs.length.should.equal(2);
done();
});
}
describe.only('Executor',function(){
describe('With persistent database',function(){
vard;
@ -131,6 +159,10 @@ describe('Executor', function () {
testThrowInCallback(d,done);
});
it('A falsy callback doesnt prevent execution of next operations',function(done){
testFalsyCallback(d,done);
});
it('Operations are executed in the right order',function(done){
testRightOrder(d,done);
});
@ -139,6 +171,10 @@ describe('Executor', function () {
testEventLoopStarvation(d,done);
});
it('Works in the right order even with no supplied callback',function(done){
testExecutorWorksWithoutCallback(d,done);
});
});// ==== End of 'With persistent database' ====
@ -160,10 +196,18 @@ describe('Executor', function () {
testThrowInCallback(d,done);
});
it('A falsy callback doesnt prevent execution of next operations',function(done){
testFalsyCallback(d,done);
});
it('Operations are executed in the right order',function(done){
testRightOrder(d,done);
});
it('Works in the right order even with no supplied callback',function(done){
testExecutorWorksWithoutCallback(d,done);
});
});// ==== End of 'With non persistent database' ====