soma.js
Version:
soma.js is a javascript framework created to build scalable and maintainable applications.
83 lines (73 loc) • 2.55 kB
JavaScript
describe("plugins", function () {
var app;
beforeEach(function () {
app = new soma.Application();
});
afterEach(function () {
app.dispose();
app = null;
});
it("create plugin", function () {
var Plugin = function(){};
var p = app.createPlugin(Plugin);
expect(p instanceof Plugin).toBeTruthy();
});
it("injections and parameters", function () {
app.injector.mapValue('prop', 'propValue');
var Plugin = function(injector, commands, mediators, dispatcher, injector, prop, p1, p2, p3, p4, p5, p6, p7) {
console.log(arguments);
expect(injector).toEqual(app.injector);
expect(commands).toEqual(app.commands);
expect(mediators).toEqual(app.mediators);
expect(dispatcher).toEqual(app.dispatcher);
expect(prop).toEqual('propValue');
expect(p1).toEqual('param1');
expect(p2).toEqual(1);
expect(p3).toEqual(false);
expect(p4).toEqual([1, 2, 3]);
expect(p5).toEqual({name:'john'});
expect(p6).toEqual('');
expect(p7).toBeUndefined();
};
var p = app.createPlugin(Plugin, 'param1', 1, false, [1, 2, 3], {name:'john'}, '');
expect(p instanceof Plugin).toBeTruthy();
});
it("missing injection", function () {
app.injector.mapValue('prop', 'propValue');
var Plugin = function(injector, dispatcher, missingProperty, injection1, injection2) {
console.log(arguments);
expect(injector).toEqual(app.injector);
expect(dispatcher).toEqual(app.dispatcher);
expect(missingProperty).toBeUndefined();
expect(injection1).toEqual('inj1');
expect(injection2).toEqual('inj2');
};
app.injector.mapValue('injection1', 'inj1');
app.injector.mapValue('injection2', 'inj2');
var p = app.createPlugin(Plugin);
expect(p instanceof Plugin).toBeTruthy();
});
it("auto-create add", function () {
var Plugin = function(instance){
instance.constructor.prototype.createSomething = function(){};
};
soma.plugins.add(Plugin);
var application = new soma.Application();
expect(typeof application.createSomething).toEqual('function');
// cleaning
application.constructor.prototype.createSomething = undefined;
soma.plugins.remove(Plugin);
});
it("auto-create remove", function () {
var Plugin = function(instance){
instance.constructor.prototype.createSomething = function(){};
};
soma.plugins.add(Plugin);
soma.plugins.remove(Plugin);
var application = new soma.Application();
expect(application.createSomething).toBeUndefined();
// cleaning
application.constructor.prototype.createSomething = undefined;
soma.plugins.remove(Plugin);
});
});