recink
Version:
Rethink CI for JavaScript applications
63 lines (50 loc) • 2.15 kB
JavaScript
;
const Container = require('../../../../../src/container');
const ContainerTransformer = require('../../../../../src/component/helper/container-transformer');
const Transformer = require('../../../../../src/component/helper/transformer');
const chai = require('chai');
describe('Test ContainerTransformer', () => {
const emptyCb = () => {};
const container = new Container({
a: '/[a-z]/',
b: {
c: 'test',
},
});
it('Test create()', () => {
const containerTransformer = new ContainerTransformer(container);
const transformer = containerTransformer.create('a', emptyCb);
chai.expect(transformer).to.be.an.instanceof(Transformer);
});
it('Test add()', () => {
const containerTransformer = new ContainerTransformer(container);
const transformer = containerTransformer.create('a', emptyCb);
containerTransformer.add(transformer);
containerTransformer.add({ path: 'a', transformer: emptyCb });
chai.expect(containerTransformer.transformers).to.have.lengthOf(2);
chai.expect(containerTransformer.transformers[0]).to.be.eql(transformer);
chai.expect(containerTransformer.transformers[1]).to.have.property('path', 'a');
chai.expect(containerTransformer.transformers[1]).to.have.property('transformer', emptyCb);
});
it('Test transform()', done => {
const containerTransformer = new ContainerTransformer(container);
containerTransformer.addPattern('a');
containerTransformer.add({
path: 'b.c',
transformer: value => {
chai.expect(value).to.be.eql('test');
return Promise.resolve('test-transformed');
},
});
containerTransformer.transform()
.then(container => {
chai.expect(container.get('a')).to.be.an('array');
chai.expect(container.get('a')[0]).to.be.an('regexp');
chai.expect(container.get('a')[0].test('b')).to.be.true;
chai.expect(container.get('a')[0].test('0')).to.be.false;
chai.expect(container.get('b.c')).to.be.eql('test-transformed');
done();
})
.catch(error => done(error));
});
});