UNPKG

@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
'use strict'; 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]); }); }); });