UNPKG

@skele/core

Version:

Core package of the Skele framework. Element definitions, registrations and traversal.

1 lines 2.11 kB
'use strict';var _immutable=require("immutable");var zip=_interopRequireWildcard(require(".."));var data=_interopRequireWildcard(require("../../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)){var desc=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):{};if(desc.get||desc.set){Object.defineProperty(newObj,key,desc);}else{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'));});});