pp-parachute
Version:
Airdrop JS Applications
89 lines (78 loc) • 3.52 kB
JavaScript
var ParachuteBase = require('../../application/parachute_base');
var Bundler = require('../../bundlers/bundler');
describe('parachute base', function () {
beforeEach(function () {
this.chute = new ParachuteBase('test');
});
it('should inherit properly', function () {
var parent = new ParachuteBase('parent');
parent.setOutputDirectory('dir');
this.chute.inheritFrom(parent);
expect(this.chute.parent).toBe(parent);
expect(this.chute.getOutputDirectory()).toEqual('dir');
});
it('should emit and handle events properly', function (done) {
this.chute.handle('event', function(one, two, three) {
expect(one).toBe(1);
expect(two).toBe(2);
expect(three).toBe(3);
done();
});
this.chute.emit('event', 1, 2, 3);
});
it('should have bundlers', function () {
var bundler1 = new Bundler();
var bundler2 = new Bundler();
this.chute.useBundler(bundler1, 'mountpath');
this.chute.useBundler(bundler2, 'mountpath2');
expect(Object.keys(this.chute.bundlers).length).toBe(2);
expect(this.chute.bundlers[bundler1.bundlerId].bundler).toBe(bundler1);
expect(this.chute.bundlers[bundler2.bundlerId].bundler).toBe(bundler2);
});
//todo fix this test
it('should return all active bundlers with no parent', function () {
var bundler1 = new Bundler();
var bundler2 = new Bundler();
this.chute.useBundler(bundler1, 'mountpath');
this.chute.useBundler(bundler2, 'mountpath2');
var bundlers = this.chute.getActiveBundlers();
expect(Object.keys(bundlers).length).toBe(2);
expect(bundlers[bundler1.bundlerId]).toBe(bundler1);
expect(bundlers[bundler2.bundlerId]).toBe(bundler2);
});
it('should return all active bundlers with a parent', function () {
var bundler1 = new Bundler();
var bundler2 = new Bundler();
var parent = new ParachuteBase('parent');
parent.useBundler(bundler1, 'path');
this.chute.useBundler(bundler2, 'mountpath2');
this.chute.inheritFrom(parent);
var bundlers = this.chute.getActiveBundlers();
expect(Object.keys(bundlers).length).toBe(2);
expect(bundlers[bundler1.bundlerId]).toBe(bundler1);
expect(bundlers[bundler2.bundlerId]).toBe(bundler2);
});
it('should skip bundlers properly', function () {
var bundler1 = new Bundler();
var bundler2 = new Bundler();
var parent = new ParachuteBase('parent');
parent.useBundler(bundler1, 'path');
this.chute.useBundler(bundler2, 'mountpath2');
this.chute.inheritFrom(parent);
this.chute.skipBundler(bundler1);
var bundlers = this.chute.getActiveBundlers();
expect(Object.keys(bundlers).length).toBe(1);
expect(bundlers[bundler2.bundlerId]).toBe(bundler2);
});
it('should inherit bundlers from its parent chain', function() {
var bundler1 = new Bundler();
var bundler2 = new Bundler();
var parent = new ParachuteBase('parent');
parent.setOutputDirectory('dir');
parent.useBundler(bundler1, 'mount');
this.chute.inheritFrom(parent);
this.chute.useBundler(bundler2, 'mount');
expect(this.chute.getBundlerById(bundler1.bundlerId).bundler).toBe(bundler1);
expect(this.chute.getBundlerById(bundler2.bundlerId).bundler).toBe(bundler2);
});
});