UNPKG

@skele/core

Version:

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

1 lines 4.69 kB
'use strict';var _immutable=_interopRequireDefault(require("immutable"));var _=require("../../");var skeleZip=_interopRequireWildcard(require(".."));var zippa=_interopRequireWildcard(require("zippa"));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};}var elementZipper=skeleZip.elementZipper;var app={kind:['test','app'],name:'App',children:{kind:['test','nav','tabs'],name:'Tabs',tabs:[{kind:'scene',name:'First Tab',content:[{kind:'header',name:'Header in First Tab'},{kind:'text',name:'Text One in First Tab'},{kind:'text',name:'Text Two in First Tab'},{kind:'image',name:'Image in First Tab',uri:'image-uri'}]},{kind:['scene'],name:'Second Tab',main:[{kind:['header'],name:'Header in Second Tab Main'},{kind:['text'],name:'Text One in Second Tab Main'},{kind:['text'],name:'Text Two in Second Tab Main'},{kind:['image'],name:'Image in Second Tab Main',uri:'image-uri'}],sidebar:{kind:'overlay',name:'Sidebar in Second Tab',content:[{kind:['overlay','header'],name:'Header in Second Tab Sidebar'},{kind:['overlay','text'],name:'Text One in Second Tab Sidebar'},{kind:['overlay','text'],name:'Text Two in Second Tab Sidebar'},{kind:['overlay','image'],name:'Image in Second Tab Sidebar',uri:'image-uri'}]}}]}};var appPreWalked={kind:['test','app'],name:'1. App',children:{kind:['test','nav','tabs'],name:'2. Tabs',tabs:[{kind:'scene',name:'3. First Tab',content:[{kind:'header',name:'4. Header in First Tab'},{kind:'text',name:'5. Text One in First Tab'},{kind:'text',name:'6. Text Two in First Tab'},{kind:'image',name:'7. Image in First Tab',uri:'image-uri'}]},{kind:['scene'],name:'8. Second Tab',main:[{kind:['header'],name:'9. Header in Second Tab Main'},{kind:['text'],name:'10. Text One in Second Tab Main'},{kind:['text'],name:'11. Text Two in Second Tab Main'},{kind:['image'],name:'12. Image in Second Tab Main',uri:'image-uri'}],sidebar:{kind:'overlay',name:'13. Sidebar in Second Tab',content:[{kind:['overlay','header'],name:'14. Header in Second Tab Sidebar'},{kind:['overlay','text'],name:'15. Text One in Second Tab Sidebar'},{kind:['overlay','text'],name:'16. Text Two in Second Tab Sidebar'},{kind:['overlay','image'],name:'17. Image in Second Tab Sidebar',uri:'image-uri'}]}}]}};var appPostWalked={kind:['test','app'],name:'17. App',children:{kind:['test','nav','tabs'],name:'16. Tabs',tabs:[{kind:'scene',name:'5. First Tab',content:[{kind:'header',name:'1. Header in First Tab'},{kind:'text',name:'2. Text One in First Tab'},{kind:'text',name:'3. Text Two in First Tab'},{kind:'image',name:'4. Image in First Tab',uri:'image-uri'}]},{kind:['scene'],name:'15. Second Tab',main:[{kind:['header'],name:'6. Header in Second Tab Main'},{kind:['text'],name:'7. Text One in Second Tab Main'},{kind:['text'],name:'8. Text Two in Second Tab Main'},{kind:['image'],name:'9. Image in Second Tab Main',uri:'image-uri'}],sidebar:{kind:'overlay',name:'14. Sidebar in Second Tab',content:[{kind:['overlay','header'],name:'10. Header in Second Tab Sidebar'},{kind:['overlay','text'],name:'11. Text One in Second Tab Sidebar'},{kind:['overlay','text'],name:'12. Text Two in Second Tab Sidebar'},{kind:['overlay','image'],name:'13. Image in Second Tab Sidebar',uri:'image-uri'}]}}]}};var countedTransformer=function countedTransformer(){var counter=0;return function(el){if(el.getIn(['name'])){counter=counter+1;return el.setIn(['name'],counter+". "+el.getIn(['name']));}return el;};};describe('zipper',function(){var zippers=[{name:'Skele Zip',zip:skeleZip},{name:'Zippa Zip',zip:zippa}];var zipperFor=function zipperFor(app,zip){return elementZipper({defaultChildPositions:['children','content','tabs','main','sidebar'],makeZipperOverride:zip.makeZipper})(_immutable.default.fromJS(app));};zippers.forEach(function(zipper){var zipperName=zipper.name;var zip=zipper.zip;test(zipperName+": postWalk",function(){expect(zip.postWalk).toBeDefined();var result=_.data.flow(zipperFor(app,zip),zip.postWalk(countedTransformer()),zip.value);expect(result).toEqualI(_immutable.default.fromJS(appPostWalked));});test(zipperName+": preWalk",function(){expect(zip.preWalk).toBeDefined();var result=_.data.flow(zipperFor(app,zip),zip.preWalk(countedTransformer()),zip.value);expect(result).toEqualI(_immutable.default.fromJS(appPreWalked));});});});