@ -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' ====
} ) ;
} ) ;