UNPKG

soma.js

Version:

soma.js is a javascript framework created to build scalable and maintainable applications.

301 lines (266 loc) 9.09 kB
describe("injection", function () { var app, injector; beforeEach(function () { app = new soma.Application(); injector = app.injector; }); afterEach(function () { app.dispose(); app = null; }); it("injection names", function () { expect(injector.hasMapping('instance')).toBeTruthy(); expect(injector.hasMapping('commands')).toBeTruthy(); expect(injector.hasMapping('injector')).toBeTruthy(); expect(injector.hasMapping('mediators')).toBeTruthy(); expect(injector.hasMapping('dispatcher')).toBeTruthy(); }); it("instance injection", function () { expect(injector.getValue('instance')).toEqual(app); var f = function(instance){this.instance = instance}; var i = injector.createInstance(f); expect(i.instance).toBeDefined(); expect(i.instance).toEqual(app); }); it("instance injection in mediator", function () { var f = function(instance){this.instance = instance}; var mediator = app.mediators.create(f, 1); expect(mediator.instance).toBeDefined(); expect(mediator.instance).toEqual(app); }); it("instance injection in mediator with inject property", function () { var f = function(){this.args = arguments}; f.inject = ['instance']; var mediator = app.mediators.create(f, 1); expect(mediator.args[0]).toBeDefined(); expect(mediator.args[0]).toEqual(app); }); it("instance injection in command", function () { var injected; var f = function(instance) { this.execute = function(event) { injected = instance; } }; app.commands.add('name', f); app.dispatcher.dispatch('name'); expect(injected).toEqual(app); }); it("instance injection in command with inject property", function () { var injected; var f = function(inst) { this.execute = function(event) { injected = inst; } }; f.inject = ['instance']; app.commands.add('name', f); app.dispatcher.dispatch('name'); expect(injected).toEqual(app); }); it("commands injection", function () { expect(injector.getValue('commands')).toEqual(app.commands); var f = function(commands){this.commands = commands}; var i = injector.createInstance(f); expect(i.commands).toBeDefined(); expect(i.commands).toEqual(app.commands); }); it("commands injection with inject property", function () { expect(injector.getValue('commands')).toEqual(app.commands); var f = function(){this.args = arguments}; f.inject = ['commands']; var i = injector.createInstance(f); expect(i.args[0]).toBeDefined(); expect(i.args[0]).toEqual(app.commands); }); it("commands injection in mediator", function () { var f = function(commands){this.commands = commands}; var mediator = app.mediators.create(f, 1); expect(mediator.commands).toBeDefined(); expect(mediator.commands).toEqual(app.commands); }); it("commands injection in mediator with inject property", function () { var f = function(){this.args = arguments}; f.inject = ['commands']; var mediator = app.mediators.create(f, 1); expect(mediator.args[0]).toBeDefined(); expect(mediator.args[0]).toEqual(app.commands); }); it("commands injection in command", function () { var injected; var f = function(commands) { this.execute = function(event) { injected = commands; } }; app.commands.add('name', f); app.dispatcher.dispatch('name'); expect(injected).toEqual(app.commands); }); it("commands injection in command with inject property", function () { var injected; var f = function(com) { this.execute = function(event) { injected = com; } }; f.inject = ['commands']; app.commands.add('name', f); app.dispatcher.dispatch('name'); expect(injected).toEqual(app.commands); }); it("injector injection", function () { expect(injector.getValue('injector')).toEqual(app.injector); var f = function(injector){this.injector = injector}; var i = injector.createInstance(f); expect(i.injector).toBeDefined(); expect(i.injector).toEqual(app.injector); }); it("injector injection with inject property", function () { expect(injector.getValue('injector')).toEqual(app.injector); var f = function(){this.args = arguments}; f.inject = ['injector']; var i = injector.createInstance(f); expect(i.args[0]).toBeDefined(); expect(i.args[0]).toEqual(app.injector); }); it("injector injection in mediator", function () { var f = function(injector){this.injector = injector}; var mediator = app.mediators.create(f, 1); expect(mediator.injector).toBeDefined(); expect(mediator.injector).toEqual(app.injector); }); it("injector injection in mediator with inject property", function () { var f = function(inj){this.inj = inj}; f.inject = ['injector']; var mediator = app.mediators.create(f, 1); expect(mediator.inj).toBeDefined(); expect(mediator.inj).toEqual(app.injector); }); it("injector injection in command", function () { var injected; var f = function(injector) { this.execute = function(event) { injected = injector; } }; app.commands.add('name', f); app.dispatcher.dispatch('name'); expect(injected).toEqual(app.injector); }); it("injector injection in command with inject property", function () { var injected; var f = function(inj) { this.execute = function(event) { injected = inj; } }; f.inject = ['injector']; app.commands.add('name', f); app.dispatcher.dispatch('name'); expect(injected).toEqual(app.injector); }); it("mediators injection", function () { expect(injector.getValue('mediators')).toEqual(app.mediators); var f = function(mediators){this.mediators = mediators}; var i = injector.createInstance(f); expect(i.mediators).toBeDefined(); expect(i.mediators).toEqual(app.mediators); }); it("mediators injection with injector property", function () { expect(injector.getValue('mediators')).toEqual(app.mediators); var f = function(){this.args = arguments}; f.inject = ['mediators']; var i = injector.createInstance(f); expect(i.args[0]).toBeDefined(); expect(i.args[0]).toEqual(app.mediators); }); it("mediators injection in mediator", function () { var f = function(mediators){this.mediators = mediators}; var mediator = app.mediators.create(f, 1); expect(mediator.mediators).toBeDefined(); expect(mediator.mediators).toEqual(app.mediators); }); it("mediators injection in mediator with inject property", function () { var f = function(){this.args = arguments}; f.inject = ['mediators']; var mediator = app.mediators.create(f, 1); expect(mediator.args[0]).toBeDefined(); expect(mediator.args[0]).toEqual(app.mediators); }); it("mediators injection in command", function () { var injected; var f = function(mediators) { this.execute = function(event) { injected = mediators; } }; app.commands.add('name', f); app.dispatcher.dispatch('name'); expect(injected).toEqual(app.mediators); }); it("mediators injection in command with inject property", function () { var injected; var f = function(meds) { this.execute = function(event) { injected = meds; } }; f.inject = ['mediators']; app.commands.add('name', f); app.dispatcher.dispatch('name'); expect(injected).toEqual(app.mediators); }); it("dispatcher injection", function () { expect(injector.getValue('dispatcher')).toEqual(app.dispatcher); var f = function(dispatcher){this.dispatcher = dispatcher}; var i = injector.createInstance(f); expect(i.dispatcher).toBeDefined(); expect(i.dispatcher).toEqual(app.dispatcher); }); it("dispatcher injection with inject property", function () { expect(injector.getValue('dispatcher')).toEqual(app.dispatcher); var f = function(){this.args = arguments}; f.inject = ['dispatcher']; var i = injector.createInstance(f); expect(i.args[0]).toBeDefined(); expect(i.args[0]).toEqual(app.dispatcher); }); it("dispatcher injection in mediator", function () { var f = function(dispatcher){this.dispatcher = dispatcher}; var mediator = app.mediators.create(f, 1); expect(mediator.dispatcher).toBeDefined(); expect(mediator.dispatcher).toEqual(app.dispatcher); }); it("dispatcher injection in mediator with inject property", function () { var f = function(){this.args = arguments}; f.inject = ['dispatcher']; var mediator = app.mediators.create(f, 1); expect(mediator.args[0]).toBeDefined(); expect(mediator.args[0]).toEqual(app.dispatcher); }); it("dispatcher injection in command", function () { var injected; var f = function(dispatcher) { this.execute = function(event) { injected = dispatcher; } }; app.commands.add('name', f); app.dispatcher.dispatch('name'); expect(injected).toEqual(app.dispatcher); }); it("dispatcher injection in command with inject property", function () { var injected; var f = function(disp) { this.execute = function(event) { injected = disp; } }; f.inject = ['dispatcher']; app.commands.add('name', f); app.dispatcher.dispatch('name'); expect(injected).toEqual(app.dispatcher); }); });