3 changed files with 160 additions and 0 deletions
@ -0,0 +1,78 @@ |
|||||
|
|
||||
|
var _d = console.log.bind( console, 'dbg: ' ); |
||||
|
var fs = require('fs'); |
||||
|
|
||||
|
function DescribeBlock( parentBlock ){ |
||||
|
_d( 'DescribeBlock:init', parentBlock ); |
||||
|
this.parent = parentBlock; |
||||
|
if( parentBlock ){ |
||||
|
parentBlock.addChild( this ); |
||||
|
} |
||||
|
|
||||
|
this.children = []; |
||||
|
this.its = []; |
||||
|
this.beforeEach = null; |
||||
|
this.afterEach = null; |
||||
|
} |
||||
|
|
||||
|
DescribeBlock.prototype.addChild = function( child ){ |
||||
|
this.children.push( child ); |
||||
|
}; |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
function SimpleMocha(){ |
||||
|
|
||||
|
this.describe = this.describe.bind( this ); |
||||
|
this.it = this.it.bind( this ); |
||||
|
this.before = this.before.bind( this ); |
||||
|
this.after = this.after.bind( this ); |
||||
|
this.beforeEach = this.beforeEach.bind( this ); |
||||
|
this.afterEach = this.afterEach.bind( this ); |
||||
|
|
||||
|
this.rootDescribeBlock = new DescribeBlock(); |
||||
|
this.currentDescribeBlock = this.rootDescribeBlock; |
||||
|
} |
||||
|
|
||||
|
SimpleMocha.prototype.describe = function( description, fn ){ |
||||
|
var parentDescribeBlock = this.currentDescribeBlock; |
||||
|
var thisDescribeBlock = new DescribeBlock( parentDescribeBlock ); |
||||
|
|
||||
|
this.currentDescribeBlock = thisDescribeBlock; |
||||
|
fn(); |
||||
|
this.currentDescribeBlock = parentDescribeBlock; |
||||
|
}; |
||||
|
|
||||
|
SimpleMocha.prototype.it = function(){}; |
||||
|
SimpleMocha.prototype.before = function( fn ){ |
||||
|
this.currentDescribeBlock.beforeFn = fn; |
||||
|
}; |
||||
|
|
||||
|
SimpleMocha.prototype.after = function(){}; |
||||
|
SimpleMocha.prototype.beforeEach = function(){}; |
||||
|
SimpleMocha.prototype.afterEach = function(){}; |
||||
|
|
||||
|
|
||||
|
SimpleMocha.DescribeBlock = DescribeBlock; |
||||
|
|
||||
|
|
||||
|
SimpleMocha.load = function( fileName ){ |
||||
|
var sm = new SimpleMocha(); |
||||
|
var describe = sm.describe; |
||||
|
var it = sm.it; |
||||
|
var before = sm.before; |
||||
|
var after = sm.after; |
||||
|
var beforeEach = sm.after; |
||||
|
var afterEach = sm.after; |
||||
|
|
||||
|
var code = fs.readFileSync( fileName, 'utf-8' ); |
||||
|
|
||||
|
eval( code ); |
||||
|
|
||||
|
return sm; |
||||
|
}; |
||||
|
|
||||
|
|
||||
|
|
||||
|
module.exports = SimpleMocha; |
@ -0,0 +1,52 @@ |
|||||
|
/* globals describe, it, before */ |
||||
|
|
||||
|
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 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, |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
describe( 'describe', function(){ |
||||
|
|
||||
|
before( beforeFn ); |
||||
|
it( 'it1', it1 ); |
||||
|
it( 'it2', it2 ); |
||||
|
|
||||
|
}); |
@ -0,0 +1,30 @@ |
|||||
|
/* globals describe, it, */ |
||||
|
|
||||
|
var SimpleMocha = require( __dirname + '/../index-v1' ); |
||||
|
|
||||
|
var assert = require('assert'); |
||||
|
|
||||
|
|
||||
|
describe( 'Simple before block + it s ', function(){ |
||||
|
|
||||
|
it( 'should parse simple test file' , function( done ){ |
||||
|
|
||||
|
var runner = SimpleMocha.load( __dirname + '/data/dummy.spec.js' ); |
||||
|
|
||||
|
assert( runner ); |
||||
|
|
||||
|
var describeBlock = runner.rootDescribeBlock; |
||||
|
|
||||
|
assert( describeBlock ); |
||||
|
assert( describeBlock instanceof SimpleMocha.DescribeBlock ); |
||||
|
assert.equal( describeBlock.children.length, 1 ); |
||||
|
|
||||
|
var firsDescribeBlock = describeBlock.children[0]; |
||||
|
|
||||
|
|
||||
|
assert( firsDescribeBlock instanceof SimpleMocha.DescribeBlock ); |
||||
|
assert( firsDescribeBlock.beforeFn ); |
||||
|
|
||||
|
done(); |
||||
|
}); |
||||
|
}) |
Loading…
Reference in new issue