UNPKG

@girders-elements/core

Version:

Girders Elements is an architectural framework that assists with building data-driven apps with React or React Native.

153 lines (116 loc) 4.1 kB
'use strict'; var _immutable=require('immutable'); var _RegistryChain=require('../RegistryChain'); var _Registry=require('../Registry');var _Registry2=_interopRequireDefault(_Registry); var _MultivalueRegistry=require('../MultivalueRegistry');var _MultivalueRegistry2=_interopRequireDefault(_MultivalueRegistry); var _PatternRegistry=require('../PatternRegistry');var _PatternRegistry2=_interopRequireDefault(_PatternRegistry);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} describe('RegistryChain',function(){ var reg1=new _Registry2.default(); var reg2=new _Registry2.default(); var combined=new _RegistryChain.RegistryChain(reg1,reg2); afterEach(function(){ reg1.reset(); reg2.reset(); }); it('chains two repositories together',function(){ reg1.register('a',1); reg2.register('b',2); expect(combined.get('a')).toEqual(1); expect(combined.get('b')).toEqual(2); }); it('gives precedence to the primary registry',function(){ reg1.register('a',1); reg2.register('a',2); expect(combined.get('a')).toEqual(2); }); it('looks for the more specific version of the key in both registries first',function(){ reg1.register(['a','b'],1); reg2.register('a',2); expect(combined.get(['a','b'])).toEqual(1); }); }); describe('RegistryChain with a fallabck pattern registry',function(){ var reg1=new _PatternRegistry2.default(); var reg2=new _Registry2.default(); var combined=new _RegistryChain.RegistryChain(reg1,reg2); afterEach(function(){ reg1.reset(); reg2.reset(); }); it('supports more/less specific keys as well as patterns',function(){ reg1.register(/^ab/,1); reg2.register(['ab','a'],2); expect(combined.get(['ab','a'])).toEqual(2); expect(combined.get('ab')).toEqual(1); }); }); describe('MultivalueRegistryChain',function(){ var reg1=new _MultivalueRegistry2.default(); var reg2=new _MultivalueRegistry2.default(); var combined=new _RegistryChain.MultivalueRegistryChain(reg1,reg2); afterEach(function(){ reg1.reset(); reg2.reset(); }); it('combines results, less specific to more, fallback to primary, from both registries',function(){ reg2.register('a',1); reg1.register(['a','b'],2); reg1.register(['a','b','c'],3); reg1.register('a',4); reg1.register(['a','b'],5); reg2.register(['a','b','c'],10); expect(combined.get('a')).toEqualI(_immutable.List.of(4,1)); expect(combined.get(['a','b'])).toEqualI(_immutable.List.of(4,1,2,5)); expect(combined.get(['a','b','c'])).toEqualI(_immutable.List.of(4,1,2,5,3,10)); }); }); describe('chainRegistries',function(){ var reg1=new _PatternRegistry2.default(); var reg2=new _Registry2.default(); var reg3=new _Registry2.default(); var reg4=new _Registry2.default(); afterEach(function(){ reg1.reset(); reg2.reset(); reg3.reset(); reg4.reset(); }); it('combines several registries, where registries to the right have precedence',function(){ var combined=(0,_RegistryChain.chainRegistries)([reg1,reg2,reg3,reg4]); reg1.register('a',1); reg4.register('a',3); reg2.register('b',6); expect(combined.get('a')).toEqual(3); expect(combined.get('b')).toEqual(6); }); it('combines a single registry',function(){ var combined=(0,_RegistryChain.chainRegistries)([reg2]); reg2.register('a',1); expect(combined.get(['a'])).toEqual(1); }); }); describe('chainMultivalueRegistries',function(){ var reg1=new _MultivalueRegistry2.default(); var reg2=new _MultivalueRegistry2.default(); var reg3=new _MultivalueRegistry2.default(); var reg4=new _MultivalueRegistry2.default(); afterEach(function(){ reg1.reset(); reg2.reset(); reg3.reset(); reg4.reset(); }); it('combines several registries, where registries to the right have precedence',function(){ var combined=(0,_RegistryChain.chainMultivalueRegistries)([reg1,reg2,reg3,reg4]); reg1.register('a',1); reg3.register('a',2); reg2.register(['a','b'],3); reg4.register(['a','b'],4); expect(combined.get(['a','b'])).toEqualI(_immutable.List.of(1,2,3,4)); }); it('combines a single registry',function(){ var combined=(0,_RegistryChain.chainMultivalueRegistries)([reg1]); reg1.register('a',1); expect(combined.get(['a'])).toEqualI(_immutable.List.of(1)); }); });