@soundstep/soma
Version:
Soma is a javascript framework created to build scalable and maintainable applications.
79 lines (65 loc) • 2.28 kB
JavaScript
const assert = require('chai').assert;
const infuse = require('@soundstep/infuse');
const Emitter = require('../src/emitter');
const Mediators = require('../src/mediators');
describe('Mediators', function() {
let mediators;
let emitter;
let injector;
function DummyMediator(target) {
this.target = target;
}
function DummyTarget() {
}
beforeEach(function() {
emitter = new Emitter();
injector = new infuse.Injector();
mediators = new Mediators(emitter, injector);
});
afterEach(function() {
mediators.dispose();
emitter.dispose();
injector.dispose();
mediators = undefined;
emitter = undefined;
injector = undefined;
});
it('has a mediator manager', function() {
assert.isDefined(mediators);
assert.ok(mediators instanceof Mediators);
});
it('creates a mediator from a target', function() {
const target = new DummyTarget();
const mediator = mediators.create(target, DummyMediator);
assert.ok(mediator instanceof DummyMediator);
assert.equal(mediator.target, target);
});
it('creates mediators from an array of targets', function() {
const target1 = new DummyTarget();
const target2 = new DummyTarget();
const target3 = new DummyTarget();
const targets = [target1, target2, target3];
const list = mediators.create(targets, DummyMediator);
assert.isArray(list);
assert.ok(list[0] instanceof DummyMediator);
assert.ok(list[1] instanceof DummyMediator);
assert.ok(list[2] instanceof DummyMediator);
assert.equal(list[0].target, target1);
assert.equal(list[1].target, target2);
assert.equal(list[2].target, target3);
});
it('receives main injector mapped values', function() {
let valueReceived;
injector.mapValue('str', 'string');
const Mediator = function(target, str) {
valueReceived = str;
};
mediators.create(new DummyTarget(), Mediator);
assert.equal(valueReceived, 'string');
});
it('dispose', function() {
assert.doesNotThrow(() => {
mediators.dispose();
});
});
});