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 */
|
/* globals describe, it, before, after, beforeEach, afterEach */
|
||||||
|
|
||||||
var messageLog = [];
|
|
||||||
var pr = function( msg ){
|
|
||||||
messageLog.push( msg );
|
|
||||||
// console.log( '--', msg );
|
|
||||||
}
|
|
||||||
|
|
||||||
function asyncFn( args ){
|
var utils = require( './test/data/utils' );
|
||||||
return function( cb ){
|
var resolvingFn = utils.resolvingFn;
|
||||||
setTimeout( function(){
|
|
||||||
pr( args.msg );
|
|
||||||
if( args.error ){
|
|
||||||
if( args.isThrow ){
|
|
||||||
throw args.error;
|
|
||||||
} else {
|
|
||||||
return cb( args.error );
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return cb( );
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
var beforeFn = asyncFn({
|
var beforeFn = resolvingFn( 'Before_block' );
|
||||||
msg: 'Before_block',
|
var it1 = resolvingFn( 'It_1' );
|
||||||
delay: 100,
|
var it2 = resolvingFn( 'It_2' );
|
||||||
error: null,
|
var afterFn = resolvingFn( 'After_block' );
|
||||||
});
|
var beforeEachFn = resolvingFn( 'BeforeEach_block' );
|
||||||
|
var afterEachFn = resolvingFn( 'AfterEach_block' );
|
||||||
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
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
describe( 'describe', function(){
|
describe( 'describe', function(){
|
||||||
@@ -70,5 +22,13 @@ describe( 'describe', function(){
|
|||||||
it( 'it2', it2 );
|
it( 'it2', it2 );
|
||||||
after( afterFn );
|
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