@girders-elements/core
Version:
Girders Elements is an architectural framework that assists with building data-driven apps with React or React Native.
76 lines (52 loc) • 1.85 kB
JavaScript
;
var _subsystem=require('../subsystem');var SubSystem=_interopRequireWildcard(_subsystem);
var _kernel=require('../kernel');var Kernel=_interopRequireWildcard(_kernel);
var _immutable=require('immutable');function _interopRequireWildcard(obj){if(obj&&obj.__esModule){return obj;}else{var newObj={};if(obj!=null){for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key))newObj[key]=obj[key];}}newObj.default=obj;return newObj;}}
describe('SubSystem',function(){
afterEach(function(){return SubSystem.resetExtensions();});
describe('Declaring SubSystems',function(){
var sub1=SubSystem.create(function(){return{
name:'sub1',
hello:function hello(){
return'hello from sub1';
}};});
var sub2=SubSystem.create(function(system){return{
name:'sub2',
hello:function hello(){
return _immutable.List.of(system.subsystems.sub1.hello(),'hello from sub 2');
}};});
var k=Kernel.create([sub1,sub2],{},{});
it('allows subsystems to talk to eachother (late binding)',function(){
expect(k.subsystems.sub2.hello()).toEqualI(
_immutable.List.of('hello from sub1','hello from sub 2'));
});
});
describe('Extensions',function(){
SubSystem.extend(function(){
var registry=[];
return{
read:{
registry:registry,
register:function register(x){
registry.push(x);
}}};
});
var sub1=SubSystem.create(function(){return{
name:'sub1',
hello:function hello(){
return'hello from sub1';
}};});
var sub2=SubSystem.create(function(system){return{
name:'sub2',
hello:function hello(){
return _immutable.List.of(system.subsystems.sub1.hello(),'hello from sub 2');
}};});
it('allows for extension points and registrations',function(){
sub1.read.register(1);
sub2.read.register(2);
var k=Kernel.create([sub1,sub2],{},{});
expect(k.subsystems.sub1.read.registry).toEqual([1]);
expect(k.subsystems.sub2.read.registry).toEqual([2]);
});
});
});