Home Identifier Source Test

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);
      });
  });
});