src/test/testInjector.js
import {Binding} from '../lib/binding'
import {ResolvedBinding} from '../lib/resolvedBinding'
import {Injector} from '../lib/injector'
let chai = require('chai');
let expect = chai.expect;
/** @test {Injector} */
describe('Injector class test',function(){
/** @test {Injector#get} */
describe('Get a String from the injector',function(){
it('Should be a string',function(){
let injector = Injector.resolveAndCreate([
new Binding('key',{toClass:String})
]);
expect(injector.get('key')).to.be.an.instanceof(String);
});
});
/** @test {Injector#get} */
describe('Get a Number from the injector',function(){
it('Should be a number',function(){
let injector = Injector.resolveAndCreate([
new Binding('key',{toClass:Number})
]);
expect(injector.get('key')).to.be.an.instanceof(Number);
});
});
/** @test {Injector#get} */
describe('Get the result of a toValue injection',function(){
it('Should be 151',function(){
let injector = Injector.resolveAndCreate([
new Binding('key',{toValue:151})
]);
expect(injector.get('key')).to.equals(151);
});
});
/** @test {Injector#get} */
describe('Get the string result of a toValue injection',function(){
it('Should be hello world',function(){
let injector = Injector.resolveAndCreate([
new Binding('key',{toValue:'hello world'})
]);
expect(injector.get('key')).to.equals('hello world');
});
});
/** @test {Injector#get} */
describe('Get the result of a toFactory injection',function(){
it('Should be 300',function(){
let injector = Injector.resolveAndCreate([
new Binding('key',{toFactory:()=>{
return 150 + 150;
}})
]);
expect(injector.get('key')).to.equals(300);
});
});
/** @test {Injector#resolveAndCreate} */
describe('ResolveAndCreate return value',function(){
it('Should be type of Injector',function(){
let injector = Injector.resolveAndCreate([])
expect(injector).to.be.an.instanceof(Injector);
});
});
/** @test {Injector#resolve} */
describe('Resolve return an array',function(){
it('Should be an array',function(){
expect(Injector.resolve([])).to.be.an.instanceof(Array);
});
});
/** @test {Injector#resolve} */
describe('Resolve at indice 0 is a ResolvedBinding',function(){
it('Should be a resolvedBinding',function(){
let rbArray = Injector.resolve([new Binding('key',{toClass:String})]);
expect(rbArray[0]).to.be.an.instanceof(ResolvedBinding);
});
});
});