deependency
Version:
Deependency is modular and extensible Inversion of Control container to easily introduce dependency injection in your NodeJS modules.
79 lines (45 loc) • 2 kB
JavaScript
;
var should = require('should');
var InstanceDefinitionProvider = require('../../lib/definitionProviders/InstanceDefinitionProvider');
describe('Describing [InstanceDefinitionProvider]', () => {
context('calling getServiceDefinition(serviceRegistration)', () => {
context('by providing a serviceRegistration which exposes an instance', () => {
var dateInstance = new Date();
var serviceRegistration = {
instance: dateInstance
};
describe('the serviceDefinition', () => {
var serviceDefinition = null;
before(() => {
// Act
var serviceDefinitionService = new InstanceDefinitionProvider();
serviceDefinition = serviceDefinitionService.getServiceDefinition(serviceRegistration);
});
it('should not be null or undefined', () => {
should(serviceDefinition).be.not.undefined();
should(serviceDefinition).be.not.null();
});
it('should not provide any name', () => {
should(serviceDefinition.names).be.Array();
serviceDefinition.names.should.have.length(0);
});
it('should have a factory method', () => {
should(serviceDefinition.factoryMethod).be.Function();
});
it('should allow to get the instance registered', () => {
var instance = serviceDefinition.factoryMethod();
should(instance).be.equal(dateInstance);
});
});
});
context('by providing an invalid serviceRegistration', () => {
it('should not be possible to get a serviceDefinition without "instance" property', () => {
// Act
var serviceDefinitionService = new InstanceDefinitionProvider();
var serviceDefinition = serviceDefinitionService.getServiceDefinition({ });
// Assert
should(serviceDefinition).be.null();
});
});
});
});