UNPKG

@girders-elements/core

Version:

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

123 lines (84 loc) 2.08 kB
'use strict'; var _immutable=require('immutable'); var _=require('..');var zip=_interopRequireWildcard(_); var _data=require('../../data');var data=_interopRequireWildcard(_data);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('Reducing a Zipper',function(){ var organization={ kind:'pm', name:'alex', children:[ { kind:'tc', name:'zdravko', children:[ { kind:'tm', name:'emilija'}, { kind:'tm', name:'filip'}]}, { kind:'tc', name:'andon', children:[ { kind:'tm', name:'blagoja'}, { kind:'tm', name:'goran'}]}, { kind:'tc', name:'ognen'}]}; var organizationElement=(0,_immutable.fromJS)(organization); it('can be done in post-order fashion',function(){ var elementZipper=zip.elementZipper({ defaultChildPositions:'children'})( organizationElement); var result=zip.reduce( function(acc,item){return item.get('name')?acc.push(item.get('name')):acc;}, (0,_immutable.List)(), elementZipper); expect(result).toEqualI( _immutable.List.of( 'emilija', 'filip', 'zdravko', 'blagoja', 'goran', 'andon', 'ognen', 'alex')); }); it('can be done in pre-order fashion',function(){ var elementZipper=zip.elementZipper({ defaultChildPositions:'children'})( organizationElement); var result=zip.reducePre( function(acc,item){return item.get('name')?acc.push(item.get('name')):acc;}, (0,_immutable.List)(), elementZipper); expect(result).toEqualI( _immutable.List.of( 'alex', 'zdravko', 'emilija', 'filip', 'andon', 'blagoja', 'goran', 'ognen')); }); it('can be done using a predicate',function(){ var elementZipper=zip.elementZipper({ defaultChildPositions:'children'})( organizationElement); var result=zip.reduce( data.when( function(item){return item.get('kind')==='tm';}, function(acc,item){return acc.push(item.get('name'));}), (0,_immutable.List)(), elementZipper); expect(result).toEqualI(_immutable.List.of('emilija','filip','blagoja','goran')); }); });