@skele/core
Version:
Core package of the Skele framework. Element definitions, registrations and traversal.
1 lines • 4.88 kB
JavaScript
'use strict';var _ramda=_interopRequireDefault(require("ramda"));var _immutable=require("immutable");var zip=_interopRequireWildcard(require("../.."));var _2=_interopRequireDefault(require(".."));var data=_interopRequireWildcard(require("../../../data"));var propNames=_interopRequireWildcard(require("../../../propNames"));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';describe('Skele Zipper',function(){var _ref,_singleChild,_ref2,_ref3,_ref4,_multipleChildren,_multipleChildrenElem;var singleChild=(_singleChild={kind:'parent'},_defineProperty(_singleChild,propNames.children,'children'),_defineProperty(_singleChild,"children",[(_ref={kind:'lvl1'},_defineProperty(_ref,propNames.children,'children'),_defineProperty(_ref,"children",[{kind:'lvl2'}]),_ref)]),_singleChild);it('zipper should correctly navigate up and down',function(){var zipper=(0,_2.default)((0,_immutable.fromJS)(singleChild));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=(_multipleChildren={id:1,kind:'t'},_defineProperty(_multipleChildren,propNames.children,'children'),_defineProperty(_multipleChildren,"children",[(_ref2={id:2,kind:'t'},_defineProperty(_ref2,propNames.children,'children'),_defineProperty(_ref2,"children",[{id:3,kind:'t'},{kind:'t',id:4}]),_ref2),(_ref3={id:5,kind:'t'},_defineProperty(_ref3,propNames.children,'children'),_defineProperty(_ref3,"children",[{kind:'t',id:6},{kind:'t',id:7}]),_ref3),(_ref4={id:8,kind:'t'},_defineProperty(_ref4,propNames.children,'children'),_defineProperty(_ref4,"children",[{kind:'t',id:9},{kind:'t',id:10}]),_ref4)]),_multipleChildren);it('zipper should correctly navigate up down left and right',function(){var zipper=(0,_2.default)((0,_immutable.fromJS)(multipleChildren));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=(_multipleChildrenElem={id:1,kind:'t'},_defineProperty(_multipleChildrenElem,propNames.children,['left','right']),_defineProperty(_multipleChildrenElem,"left",[{kind:'t',id:2}]),_defineProperty(_multipleChildrenElem,"right",[{kind:'t',id:3},{kind:'t',id:4}]),_multipleChildrenElem);it('zipper multiple children elements',function(){var zipper=(0,_2.default)((0,_immutable.fromJS)(multipleChildrenElements));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);});});