@edools/epm
Version:
Edools apps management tool
70 lines (59 loc) • 1.93 kB
JavaScript
import DepsResolver from '../../../../src/themes/lib/dependencies';
import { themeConfig } from '../../../mocks/config';
describe('Dependencies resolver', () => {
var dependencies, arrayDeps, depsResolver;
beforeEach(() => {
dependencies = {
home: '0.8.0-beta.49',
ecommerce: '0.8.0-beta.49'
};
arrayDeps = [{
name: 'home',
version: '0.8.0-beta.49',
dependencies: {
auth: '0.8.0'
}
}, {
name: 'ecommerce',
version: '0.8.0-beta.49',
dependencies: {
auth: '0.8.0'
}
}];
depsResolver = new DepsResolver(themeConfig);
});
it('should be ok', () => {
expect(depsResolver).to.be.ok;
});
it('should transform dependencies object into array', () => {
let result = depsResolver.depsToArray(dependencies);
expect(result).to.be.an('array');
expect(result[0].app).to.equal('home');
expect(result[0].version).to.equal('0.8.0-beta.49');
expect(result[1].app).to.equal('ecommerce');
expect(result[1].version).to.equal('0.8.0-beta.49');
});
it('should get detailed dependencies', (done) => {
depsResolver.getDeps(dependencies)
.then(deps => {
expect(deps).to.be.an('array');
done();
});
});
it('should format array dependencies into object', () => {
expect(depsResolver.format(arrayDeps)).to.deep.equal({
auth: '0.8.0',
home: '0.8.0-beta.49',
ecommerce: '0.8.0-beta.49'
});
});
it('should get all sub dependencies from dependencies array', () => {
expect(depsResolver.getSubDeps(arrayDeps)).to.deep.equal([{ app: 'auth', version: '0.8.0' }]);
});
it('should prefer a root dependency over the same sub dependency', () => {
arrayDeps.push({ name: 'auth', version: '0.8.1' });
let subDeps = depsResolver.getSubDeps(arrayDeps);
expect(subDeps).to.be.an('array');
expect(subDeps.length).to.equal(0);
});
});