enb
Version:
Faster BEM/BEViS assembler
80 lines (61 loc) • 2.6 kB
JavaScript
var fs = require('fs');
var vow = require('vow');
var vowFs = require('vow-fs');
var mockFs = require('mock-fs');
var _ = require('lodash');
var MakePlatform = require('../../../lib/make');
var Node = require('../../../lib/node/node');
var NodeConfig = require('../../../lib/config/node-config');
var ProjectConfig = require('../../../lib/config/project-config');
var NodeMaskConfig = require('../../../lib/config/node-mask-config');
var Logger = require('../../../lib/logger');
describe('make/requireNodeSources', function () {
var makePlatform;
var sandbox;
before(function () {
sandbox = sinon.sandbox.create();
});
beforeEach(function (done) {
mockFs({});
sandbox.stub(ProjectConfig.prototype);
sandbox.stub(Node.prototype);
sandbox.stub(fs, 'existsSync').returns(true);
sandbox.stub(vowFs, 'makeDir').returns(vow.fulfill());
makePlatform = new MakePlatform();
makePlatform.init('/path/to/project', 'mode', function () {}).then(done);
makePlatform.setLogger(sinon.createStubInstance(Logger));
});
afterEach(function () {
mockFs.restore();
sandbox.restore();
});
it('should return promise', function () {
var result = makePlatform.requireNodeSources('path/to/node');
expect(result).to.be.instanceOf(vow.Promise);
});
it('should init required node', function () {
var initNode = sinon.spy(makePlatform, 'initNode');
makePlatform.requireNodeSources('path/to/node');
expect(initNode).to.be.calledWith('path/to/node');
});
it('should require sources from initialized node', function () {
setup({ nodePath: 'path/to/node' });
return makePlatform.requireNodeSources('path/to/node').then(function () {
expect(Node.prototype.requireSources).to.be.called;
});
});
it('should pass required targets to node when require sources from it', function () {
setup({ nodePath: 'path/to/node' });
return makePlatform.requireNodeSources('path/to/node', ['?.js']).then(function () {
expect(Node.prototype.requireSources).to.be.calledWith(['?.js']);
});
});
});
function setup (settings) {
settings = settings || {};
_.defaults(settings, { nodePath: 'default/path' });
ProjectConfig.prototype.getNodeConfig
.withArgs(settings.nodePath).returns(sinon.createStubInstance(NodeConfig));
ProjectConfig.prototype.getNodeMaskConfigs
.withArgs(settings.nodePath).returns([sinon.createStubInstance(NodeMaskConfig)]);
}