mirror of https://github.com/ColorlibHQ/gentelella
160 lines
4.0 KiB
JavaScript
160 lines
4.0 KiB
JavaScript
'use strict';
|
|
|
|
var assert = require('assert');
|
|
var App = require('..');
|
|
var app;
|
|
|
|
describe('task()', function() {
|
|
beforeEach(function() {
|
|
app = new App();
|
|
app.tasks = {};
|
|
});
|
|
|
|
it('should register a task', function() {
|
|
var fn = function(done) {
|
|
done();
|
|
};
|
|
app.task('default', fn);
|
|
assert.equal(typeof app.tasks.default, 'object');
|
|
assert.equal(app.tasks.default.fn, fn);
|
|
});
|
|
|
|
it('should register a task with an array of dependencies', function() {
|
|
app.task('default', ['foo', 'bar'], function(done) {
|
|
done();
|
|
});
|
|
assert.equal(typeof app.tasks.default, 'object');
|
|
assert.deepEqual(app.tasks.default.deps, ['foo', 'bar']);
|
|
});
|
|
|
|
it('should register a task with a list of strings as dependencies', function() {
|
|
app.task('default', 'foo', 'bar', function(done) {
|
|
done();
|
|
});
|
|
assert.equal(typeof app.tasks.default, 'object');
|
|
assert.deepEqual(app.tasks.default.deps, ['foo', 'bar']);
|
|
});
|
|
|
|
it('should run a task', function(done) {
|
|
var count = 0;
|
|
app.task('default', function(cb) {
|
|
count++;
|
|
cb();
|
|
});
|
|
|
|
app.build('default', function(err) {
|
|
if (err) return done(err);
|
|
assert.equal(count, 1);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should throw an error when a task with unregistered dependencies is run', function(done) {
|
|
var count = 0;
|
|
app.task('default', ['foo', 'bar'], function(cb) {
|
|
count++;
|
|
cb();
|
|
});
|
|
|
|
app.build('default', function(err) {
|
|
if (!err) return done(new Error('Expected an error to be thrown.'));
|
|
assert.equal(count, 0);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should throw an error when `.build` is called without a callback function.', function() {
|
|
try {
|
|
app.build('default');
|
|
throw new Error('Expected an error to be thrown.');
|
|
} catch (err) {
|
|
}
|
|
});
|
|
|
|
it('should emit task events', function(done) {
|
|
var events = [];
|
|
app.on('task:starting', function(task) {
|
|
events.push('starting.' + task.name);
|
|
});
|
|
app.on('task:finished', function(task) {
|
|
events.push('finished.' + task.name);
|
|
});
|
|
app.on('task:error', function(err, task) {
|
|
events.push('error.' + task.name);
|
|
});
|
|
|
|
app.task('foo', function(cb) {
|
|
cb();
|
|
});
|
|
app.task('bar', ['foo'], function(cb) {
|
|
cb();
|
|
});
|
|
app.task('default', ['bar']);
|
|
app.build('default', function(err) {
|
|
if (err) return done(err);
|
|
assert.deepEqual(events, [
|
|
'starting.default',
|
|
'starting.bar',
|
|
'starting.foo',
|
|
'finished.foo',
|
|
'finished.bar',
|
|
'finished.default'
|
|
]);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should emit an error event when an error is passed back in a task', function(done) {
|
|
app.on('error', function(err) {
|
|
assert(err);
|
|
assert.equal(err.message, 'This is an error');
|
|
});
|
|
app.task('default', function(cb) {
|
|
return cb(new Error('This is an error'));
|
|
});
|
|
app.build('default', function(err) {
|
|
if (err) return done();
|
|
done(new Error('Expected an error'));
|
|
});
|
|
});
|
|
|
|
it('should emit an error event when an error is thrown in a task', function(done) {
|
|
var errors = 0;
|
|
app.on('error', function(err) {
|
|
errors++;
|
|
assert(err);
|
|
assert.equal(err.message, 'This is an error');
|
|
});
|
|
app.task('default', function(cb) {
|
|
cb(new Error('This is an error'));
|
|
});
|
|
app.build('default', function(err) {
|
|
assert.equal(errors, 1);
|
|
if (err) return done();
|
|
done(new Error('Expected an error'));
|
|
});
|
|
});
|
|
|
|
it('should run dependencies before running the dependent task.', function(done) {
|
|
var seq = [];
|
|
app.task('foo', function(cb) {
|
|
seq.push('foo');
|
|
cb();
|
|
});
|
|
app.task('bar', function(cb) {
|
|
seq.push('bar');
|
|
cb();
|
|
});
|
|
app.task('default', ['foo', 'bar'], function(cb) {
|
|
seq.push('default');
|
|
cb();
|
|
});
|
|
|
|
app.build('default', function(err) {
|
|
if (err) return done(err);
|
|
assert.deepEqual(seq, ['foo', 'bar', 'default']);
|
|
done();
|
|
});
|
|
});
|
|
});
|