mirror of
https://github.com/harish2704/simple-mocha.git
synced 2026-09-10 06:21:08 +00:00
* Refactoring utils
* second level block parsing tests
This commit is contained in:
+16
-56
@@ -1,64 +1,16 @@
|
||||
/* globals describe, it, before, after, beforeEach, afterEach */
|
||||
|
||||
var messageLog = [];
|
||||
var pr = function( msg ){
|
||||
messageLog.push( msg );
|
||||
// console.log( '--', msg );
|
||||
}
|
||||
|
||||
function asyncFn( args ){
|
||||
return function( cb ){
|
||||
setTimeout( function(){
|
||||
pr( args.msg );
|
||||
if( args.error ){
|
||||
if( args.isThrow ){
|
||||
throw args.error;
|
||||
} else {
|
||||
return cb( args.error );
|
||||
}
|
||||
} else {
|
||||
return cb( );
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
var utils = require( './test/data/utils' );
|
||||
var resolvingFn = utils.resolvingFn;
|
||||
|
||||
|
||||
var beforeFn = asyncFn({
|
||||
msg: 'Before_block',
|
||||
delay: 100,
|
||||
error: null,
|
||||
});
|
||||
|
||||
var it1 = asyncFn({
|
||||
msg: 'It_1',
|
||||
delay: 10,
|
||||
error: null,
|
||||
});
|
||||
|
||||
var it2 = asyncFn({
|
||||
msg: 'It_2',
|
||||
delay: 500,
|
||||
error: null,
|
||||
});
|
||||
|
||||
var afterFn = asyncFn({
|
||||
msg: 'After_block',
|
||||
delay: 60,
|
||||
error: null,
|
||||
});
|
||||
|
||||
var beforeEachFn = asyncFn({
|
||||
msg: 'BeforeEach_block',
|
||||
delay: 5,
|
||||
error: null
|
||||
});
|
||||
|
||||
var afterEachFn = asyncFn({
|
||||
msg: 'AfterEach_block',
|
||||
delay: 5,
|
||||
error: null
|
||||
});
|
||||
var beforeFn = resolvingFn( 'Before_block' );
|
||||
var it1 = resolvingFn( 'It_1' );
|
||||
var it2 = resolvingFn( 'It_2' );
|
||||
var afterFn = resolvingFn( 'After_block' );
|
||||
var beforeEachFn = resolvingFn( 'BeforeEach_block' );
|
||||
var afterEachFn = resolvingFn( 'AfterEach_block' );
|
||||
|
||||
|
||||
describe( 'describe', function(){
|
||||
@@ -70,5 +22,13 @@ describe( 'describe', function(){
|
||||
it( 'it2', it2 );
|
||||
after( afterFn );
|
||||
|
||||
describe( 'child block', function(){
|
||||
before( beforeFn );
|
||||
beforeEach( beforeEachFn );
|
||||
afterEach( afterEachFn );
|
||||
it( 'it1', it1 );
|
||||
it( 'it2', it2 );
|
||||
after( afterFn );
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
|
||||
var messageLog = [];
|
||||
|
||||
var pr = function( msg ){
|
||||
messageLog.push( msg );
|
||||
// console.log( '--', msg );
|
||||
}
|
||||
|
||||
|
||||
function asyncFn( args ){
|
||||
return function( cb ){
|
||||
setTimeout( function(){
|
||||
pr( args.msg );
|
||||
if( args.error ){
|
||||
if( args.isThrow ){
|
||||
throw args.error;
|
||||
} else {
|
||||
return cb( args.error );
|
||||
}
|
||||
} else {
|
||||
return cb( );
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function rand(){
|
||||
return parseInt( Math.random()*1000 ) % 27;
|
||||
}
|
||||
|
||||
function resolvingFn( msg ){
|
||||
return asyncFn({
|
||||
msg: msg,
|
||||
delay: rand(),
|
||||
error: null,
|
||||
});
|
||||
}
|
||||
|
||||
function rejectingFn( msg ){
|
||||
return asyncFn({
|
||||
msg: msg,
|
||||
delay: rand(),
|
||||
error: new Error( 'Reject:' + msg ),
|
||||
});
|
||||
}
|
||||
|
||||
function throwingFn( msg ){
|
||||
return asyncFn({
|
||||
msg: msg,
|
||||
delay: rand(),
|
||||
error: new Error( 'Throw:' + msg ),
|
||||
isThrow: true,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
module.exports = {
|
||||
messageLog: messageLog,
|
||||
pr: pr,
|
||||
asyncFn: asyncFn,
|
||||
resolvingFn: resolvingFn,
|
||||
rejectingFn: rejectingFn,
|
||||
throwingFn: throwingFn,
|
||||
};
|
||||
@@ -61,6 +61,43 @@ describe( 'Simple before block + it s ', function(){
|
||||
})
|
||||
|
||||
});
|
||||
|
||||
describe( 'second level child block', function( ){
|
||||
|
||||
it( 'should have second level describeBlock', function( ){
|
||||
assert.equal( firsDescribeBlock.children.length, 1 );
|
||||
assert( firsDescribeBlock.children[0] );
|
||||
});
|
||||
|
||||
var childDescribeBlock = firsDescribeBlock.children[0];
|
||||
|
||||
it( 'should parse before hook', function(){
|
||||
assert( childDescribeBlock.beforeFn );
|
||||
});
|
||||
|
||||
|
||||
it( 'should parse it blocks', function(){
|
||||
assert.equal( childDescribeBlock.its.length, 2 );
|
||||
childDescribeBlock.its.forEach( function( itBlk ){
|
||||
assert( itBlk );
|
||||
assert( itBlk.description );
|
||||
assert( itBlk.fn );
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
it( 'should parse after blocks', function(){
|
||||
assert( childDescribeBlock.afterFn );
|
||||
});
|
||||
|
||||
it( 'should parse beforeEach block', function(){
|
||||
assert( childDescribeBlock.beforeEachFn );
|
||||
})
|
||||
|
||||
it( 'should parse afterEach block', function(){
|
||||
assert( childDescribeBlock.afterEachFn );
|
||||
})
|
||||
})
|
||||
});
|
||||
});
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user