broom
Version:
Application level flow-control library
58 lines (56 loc) • 1.83 kB
JavaScript
var Broom = require('../lib/broom.js').broom;
var assert = require('assert');
describe("#basic", function () {
var handler;
beforeEach(function (done) {
handler = new Broom({
'fileName': 'index.js',
'dependenciesName': 'deps',
'entryName': 'onStart'
});
handler.setRootPath(__dirname);
handler.scan('./fixtures/modulesRoot', done);
});
it('it should contain directory structure', function (done) {
assert.ok(handler.flowTree['/blogActions']);
assert.ok(handler.flowTree['/getUser']);
assert.ok(handler.flowTree['/saveUser']);
assert.ok(handler.flowTree['/blogActions/setPageView']);
assert.ok(handler.flowTree['/blogActions/sendStats']);
done();
});
it('it should run and return results to a final callback', function (done) {
var rootArg = {'test': 1};
handler.setRootArgs(rootArg);
handler.run(function (err, results) {
assert.equal(results['/blogActions'].statsSended, true);
assert.equal(rootArg.test, 2);
done();
});
});
it('should handle concurrent requests without messing agruments', function (done) {
for (var i = 0; i < 10; i++) {
(function (arg) {
var rootArg = {'test': arg, 'random': Math.random()};
handler.setRootArgs(rootArg);
handler.run(function (err, results) {
assert.equal(rootArg.test, arg + 1);
assert.equal(results['/'].random, rootArg.random);
if (arg === 9) {
done();
}
});
}(i));
}
});
});
describe('#scanning', function () {
it("should not return error", function (done) {
var handler = new Broom();
handler.setRootPath(__dirname);
handler.scan('./fixtures/modulesRoot', function (err, result) {
assert.equal(false, err instanceof Error);
done();
});
});
});