UNPKG

@skele/core

Version:

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

1 lines 5.02 kB
'use strict';var _ramda=_interopRequireDefault(require("ramda"));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;}}function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}var childCollectionKind='@@skele/child-collection';function elementZipper(data,defaultChildPositions){return zip.elementZipper({defaultChildPositions:defaultChildPositions})(data);}describe('Zipper',function(){var _withChildrenPosition;var singleChild={kind:'parent',children:[{kind:'lvl1',children:[{kind:'lvl2'}]}]};it('zipper should correctly navigate up and down',function(){var zipper=elementZipper((0,_immutable.fromJS)(singleChild),'children');expect(zip.node(zipper).get('kind')).toEqual('parent');expect(data.isOfKind(childCollectionKind,zip.node(zip.down(zipper)))).toBe(true);expect(_ramda.default.pipe(zip.down,zip.down,zip.node)(zipper).get('kind')).toEqual('lvl1');expect(data.isOfKind(childCollectionKind,_ramda.default.pipe(zip.down,zip.down,zip.down,zip.node)(zipper))).toBe(true);expect(_ramda.default.pipe(zip.down,zip.down,zip.down,zip.down,zip.node)(zipper).get('kind')).toEqual('lvl2');expect(_ramda.default.pipe(zip.down,zip.down,zip.down,zip.down,zip.down)(zipper)).toBeNull();expect(_ramda.default.pipe(zip.down,zip.up,zip.node)(zipper).get('kind')).toEqual('parent');expect(_ramda.default.pipe(zip.down,zip.down,zip.down,zip.up,zip.node)(zipper).get('kind')).toEqual('lvl1');});var multipleChildren={id:1,kind:'t',children:[{id:2,kind:'t',children:[{id:3,kind:'t'},{kind:'t',id:4}]},{id:5,kind:'t',children:[{kind:'t',id:6},{kind:'t',id:7}]},{id:8,kind:'t',children:[{kind:'t',id:9},{kind:'t',id:10}]}]};it('zipper should correctly navigate up down left and right',function(){var zipper=elementZipper((0,_immutable.fromJS)(multipleChildren),'children');expect(zip.node(zipper).get('id')).toEqual(1);expect(data.isOfKind(childCollectionKind,zip.node(zip.down(zipper)))).toBe(true);expect(_ramda.default.pipe(zip.down,zip.down,zip.node)(zipper).get('id')).toEqual(2);expect(_ramda.default.pipe(zip.down,zip.down,zip.right,zip.node)(zipper).get('id')).toEqual(5);expect(_ramda.default.pipe(zip.down,zip.down,zip.right,zip.right,zip.node)(zipper).get('id')).toEqual(8);expect(_ramda.default.pipe(zip.down,zip.down,zip.right,zip.right,zip.left,zip.node)(zipper).get('id')).toEqual(5);expect(data.isOfKind(childCollectionKind,_ramda.default.pipe(zip.down,zip.down,zip.right,zip.right,zip.left,zip.up,zip.node)(zipper))).toBe(true);expect(_ramda.default.pipe(zip.down,zip.down,zip.right,zip.right,zip.left,zip.up,zip.up,zip.node)(zipper).get('id')).toEqual(1);});var multipleChildrenElements={id:1,kind:'t',left:[{kind:'t',id:2}],right:[{kind:'t',id:3},{kind:'t',id:4}]};it('zipper multiple children elements',function(){var zipper=elementZipper((0,_immutable.fromJS)(multipleChildrenElements),['left','right']);expect(zip.node(zipper).get('id')).toEqual(1);expect(_ramda.default.pipe(zip.down,zip.node)(zipper).get('propertyName')).toEqual('left');expect(_ramda.default.pipe(zip.down,zip.right,zip.node)(zipper).get('propertyName')).toEqual('right');expect(_ramda.default.pipe(zip.down,zip.down,zip.node)(zipper).get('id')).toEqual(2);expect(_ramda.default.pipe(zip.down,zip.right,zip.down,zip.node)(zipper).get('id')).toEqual(3);expect(_ramda.default.pipe(zip.down,zip.right,zip.down,zip.right,zip.node)(zipper).get('id')).toEqual(4);});var withChildrenPositions=(_withChildrenPosition={id:1,kind:'tX'},_defineProperty(_withChildrenPosition,data.childrenProperty,['left','right']),_defineProperty(_withChildrenPosition,"left",[{kind:'t',id:2}]),_defineProperty(_withChildrenPosition,"right",[{kind:'t',id:3},{kind:'t',id:4}]),_withChildrenPosition);it('supports the @@skele/children hint for child positions',function(){var zipper=elementZipper((0,_immutable.fromJS)(withChildrenPositions));expect(zip.node(zipper).get('id')).toEqual(1);expect(_ramda.default.pipe(zip.down,zip.node)(zipper).get('propertyName')).toEqual('left');expect(_ramda.default.pipe(zip.down,zip.right,zip.node)(zipper).get('propertyName')).toEqual('right');expect(_ramda.default.pipe(zip.down,zip.down,zip.node)(zipper).get('id')).toEqual(2);expect(_ramda.default.pipe(zip.down,zip.right,zip.down,zip.node)(zipper).get('id')).toEqual(3);expect(_ramda.default.pipe(zip.down,zip.right,zip.down,zip.right,zip.node)(zipper).get('id')).toEqual(4);});});