Last necessary test

pull/2/head
Louis Chatriot 9 years ago
parent be83e8d4ee
commit 41827a51e1
  1. 2
      lib/executor.js
  2. 33
      test/executor.test.js

@ -28,7 +28,7 @@ function Executor () {
} }
lastArg.apply(null, arguments); lastArg.apply(null, arguments);
}; };
} else if (!lastArg && task.arguments.length) { } else if (!lastArg && task.arguments.length !== 0) {
// false/undefined/null supplied as callbback // false/undefined/null supplied as callbback
newArguments[newArguments.length - 1] = function () { cb(); }; newArguments[newArguments.length - 1] = function () { cb(); };
} else { } else {

@ -38,7 +38,7 @@ function testThrowInCallback (d, done) {
}); });
} }
//Test that if the callback is falsy, the next DB operations will still be executed // Test that if the callback is falsy, the next DB operations will still be executed
function testFalsyCallback (d, done) { function testFalsyCallback (d, done) {
d.insert({ a: 1 }, null); d.insert({ a: 1 }, null);
process.nextTick(function () { process.nextTick(function () {
@ -62,7 +62,7 @@ function testFalsyCallback (d, done) {
// 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 // 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
function testRightOrder (d, done) { function testRightOrder (d, done) {
var currentUncaughtExceptionHandlers = process.listeners('uncaughtException'); var currentUncaughtExceptionHandlers = process.listeners('uncaughtException');
process.removeAllListeners('uncaughtException'); process.removeAllListeners('uncaughtException');
process.on('uncaughtException', function (err) { process.on('uncaughtException', function (err) {
@ -99,8 +99,6 @@ function testRightOrder (d, done) {
}); });
} }
// Note: The following test does not have any assertion because it // Note: The following test does not have any assertion because it
// is meant to address the deprecation warning: // 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. // (node) warning: Recursive process.nextTick detected. This will break in the next version of node. Please use setImmediate for recursive deferral.
@ -114,9 +112,20 @@ var testEventLoopStarvation = function(d, done){
}); });
} }
done(); done();
}; };
// Test that operations are executed in the right order even with no callback
function testExecutorWorksWithoutCallback (d, done) {
d.insert({ a: 1 });
d.insert({ a: 2 }, false);
d.find({}, function (err, docs) {
docs.length.should.equal(2);
done();
});
}
describe('Executor', function () {
describe.only('Executor', function () {
describe('With persistent database', function () { describe('With persistent database', function () {
var d; var d;
@ -161,7 +170,11 @@ describe('Executor', function () {
it('Does not starve event loop and raise warning when more than 1000 callbacks are in queue', function(done){ it('Does not starve event loop and raise warning when more than 1000 callbacks are in queue', function(done){
testEventLoopStarvation(d, done); testEventLoopStarvation(d, done);
}); });
it('Works in the right order even with no supplied callback', function(done){
testExecutorWorksWithoutCallback(d, done);
});
}); // ==== End of 'With persistent database' ==== }); // ==== End of 'With persistent database' ====
@ -190,7 +203,11 @@ describe('Executor', function () {
it('Operations are executed in the right order', function(done) { it('Operations are executed in the right order', function(done) {
testRightOrder(d, 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' ==== }); // ==== End of 'With non persistent database' ====
}); });

Loading…
Cancel
Save