UNPKG

@skele/core

Version:

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

1 lines 2.4 kB
'use strict';var _immutable=require("immutable");var zip=_interopRequireWildcard(require(".."));var R=_interopRequireWildcard(require("ramda"));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('Editing 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','yoga'],name:'blagoja'},{kind:'tm',name:'goran'}]},{kind:'tc',name:'ognen'}]};var createElementZipper=function createElementZipper(){return zip.elementZipper({defaultChildPositions:'children'})((0,_immutable.fromJS)(organization));};test('editCond() -- conditional editing of nodes in an entire tree',function(){var elementZipper=createElementZipper();var result=zip.editCond([[function(item){return item.get('name')==='andon';},function(item){return item.set('name','sikavica');}],[['tm','yoga'],function(item){return item.update('name',function(name){return"yoga-"+name;});}],['tm',function(item){return item.update('name',function(name){return"member-"+name;});}]],elementZipper);expect(zip.node(result)).toEqualI((0,_immutable.fromJS)({kind:'pm',name:'alex',children:[{kind:'tc',name:'zdravko',children:[{kind:'tm',name:'member-emilija'},{kind:'tm',name:'member-filip'}]},{kind:'tc',name:'sikavica',children:[{kind:['tm','yoga'],name:'yoga-member-blagoja'},{kind:'tm',name:'member-goran'}]},{kind:'tc',name:'ognen'}]}));});test('editAt()',function(){var root=createElementZipper();var f=function f(e){return e.set('name','Filip');};var z=zip.down(zip.down(root));var zEdited=zip.editAt(R.pipe(zip.down,zip.down,zip.right),f,z);expect(zip.root(zEdited).getIn(['children',0,'children',1,'name'])).toEqual('Filip');expect(function(){zip.editAt(zip.up,f,z);}).toThrow();expect(function(){zip.editAt(zip.left,f,z);}).toThrow();expect(function(){zip.editAt(zip.right,f,z);}).toThrow();expect(function(){zip.editAt(zip.right,f,z);}).toThrow();expect(function(){zip.editAt(R.pipe(zip.down,zip.right),f,z);}).toThrow();});});