UNPKG

@girders-elements/core

Version:

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

75 lines (56 loc) 2.28 kB
'use strict'; var _immutable=require('immutable'); var _Registry=require('../Registry');var _Registry2=_interopRequireDefault(_Registry);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};} describe('Registry',function(){ var registry=new _Registry2.default(); afterEach(function(){return registry.reset();}); it('can be created and used in key-value (map) fashion',function(){ expect(registry.get('detective')).toEqual(undefined); registry.register('detective','Sherlock Holmes'); expect(registry.get('detective')).toEqual('Sherlock Holmes'); }); it('allows arrays for keys',function(){ registry.register(['a','b'],1); expect(registry.get('detective')).toBeUndefined(); expect(registry.get(['a','c'])).toBeUndefined(); expect(registry.get(['a','b'])).toEqual(1); }); it('allows lists for keys; can be used interexchangeably with arrays',function(){ registry.register(['a','b'],1); registry.register(_immutable.List.of('c','d'),2); expect(registry.get(_immutable.List.of('a','b'))).toEqual(1); expect(registry.get(_immutable.List.of('c','d'))).toEqual(2); expect(registry.get(['c','d'])).toEqual(2); }); it('makes treats X and [X] equivalently',function(){ registry.register('a',1); registry.register(['b'],2); expect(registry.get('a')).toEqual(1); expect(registry.get(['a'])).toEqual(1); expect(registry.get('b')).toEqual(2); expect(registry.get(['b'])).toEqual(2); }); it('when using lists, performs lookups by lessening the specificity',function(){ registry.register('a',1); registry.register(['a','b'],2); expect(registry.get('a')).toEqual(1); expect(registry.get(['a','b'])).toEqual(2); expect(registry.get(['a','c'])).toEqual(1); expect(registry.get(['a','c','b'])).toEqual(1); expect(registry.get(['a','b','c'])).toEqual(2); }); it('it allows the empty list as a key, (effectively used as default value)',function(){ registry.register([],-1); registry.register(['x'],1); expect(registry.get([])).toEqual(-1); expect(registry.get('xyz')).toEqual(-1); expect(registry.get('x')).toEqual(1); expect(registry.get(['x','y'])).toEqual(1); expect(registry.get(['y','x'])).toEqual(-1); }); it('forgets older registrations',function(){ registry.register('x',1); registry.register('x',2); expect(registry.get('x')).toEqual(2); }); });