enb
Version:
Faster BEM/BEViS assembler
78 lines (61 loc) • 2.67 kB
JavaScript
var path = require('path');
var vow = require('vow');
var nodeFactory = require('../../../lib/node');
var MakePlatform = require('../../../lib/make');
var Cache = require('../../../lib/cache/cache');
var BaseTech = require('../../../lib/tech/base-tech');
describe('node/cleanup', function () {
var node;
var tech;
beforeEach(function () {
var nodePath = path.join('path', 'to', 'node');
var projectDir = path.join('path', 'to', 'project');
var makePlatform = sinon.createStubInstance(MakePlatform);
makePlatform.getDir.returns(projectDir);
tech = sinon.createStubInstance(BaseTech);
tech.clean.returns(vow.fulfill);
tech.getTargets.returns(['node.js']);
node = nodeFactory.mkNode(nodePath, makePlatform, sinon.createStubInstance(Cache));
node.setTargetsToBuild(['node.js']);
node.setTechs([tech]);
});
describe('cleanTargets', function () {
beforeEach(function (done) {
// no public method for registering targets available, clean does registering targets inside
node.clean().then(function () {
done();
});
});
it('should return promise', function () {
var result = node.cleanTargets(['node.js']);
expect(result).to.be.instanceOf(vow.Promise);
});
it('should throw error if no tech registered for passed target', function () {
expect(function () { node.cleanTargets(['node.css']); })
.to.throw('There is no tech for target node.css');
});
it('should call clean for techs associated with target', function () {
tech.clean.reset(); // reset because clean is being called in constructor
return node.cleanTargets(['node.js']).then(function () {
expect(tech.clean).to.be.calledOnce;
});
});
});
describe('clean', function () {
it('should return promise', function () {
var result = node.clean(['node.js']);
expect(result).to.be.instanceOf(vow.Promise);
});
it('should register node targets before initiating clean', function () {
return node.clean(['node.js']).then(function () {
expect(node.hasRegisteredTarget('node.js')).to.be.true;
});
});
it('should initiate clean for resolved targets', function () {
var cleanTargets = sinon.spy(node, 'cleanTargets');
return node.clean(['node.js']).then(function () {
expect(cleanTargets).to.be.called;
});
});
});
});