UNPKG

ancient-funicular

Version:

Just async mounting, updating and unmounting hierarchical carriages.

3 lines 8.6 kB
'use strict';var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if('value'in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _chai=require('chai');var _lib=require('../lib');var _lib2=_interopRequireDefault(_lib);var _ancientGraph=require('ancient-graph');var _async=require('async');var _async2=_interopRequireDefault(_async);var _each=require('async/each');var _each2=_interopRequireDefault(_each);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function')}}function _possibleConstructorReturn(self,call){if(!self){throw new ReferenceError('this hasn\'t been initialised - super() hasn\'t been called')}return call&&(typeof call==='object'||typeof call==='function')?call:self}function _inherits(subClass,superClass){if(typeof superClass!=='function'&&superClass!==null){throw new TypeError('Super expression must either be null or a function, not '+typeof superClass)}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass}require('source-map-support').install();var generateFunicular=function generateFunicular(memory){var funicular=new _lib2.default;funicular.Carriage=function(_funicular$Carriage){_inherits(_class,_funicular$Carriage);function _class(){_classCallCheck(this,_class);return _possibleConstructorReturn(this,(_class.__proto__||Object.getPrototypeOf(_class)).apply(this,arguments))}_createClass(_class,[{key:'childDidRemount',value:function childDidRemount(unmountError,oldChild,mountError,newChild){if(this.data.childRemount){this.remount()}}},{key:'enable',value:function enable(callback){var _this2=this;if(this.data.childs){(0,_each2.default)(this.data.childs,function(child,next){_this2.mountChild(child,memory[child],function(error){next(error)})},function(error){if(error){_this2.error=new Error('Broken child.');(0,_each2.default)(_this2.childs,function(child,next){child.unmount()},function(){callback()})}else{// Useful work. callback()}})}else callback()}}]);return _class}(funicular.Carriage);return funicular};describe('AncientSouls/Funicular',function(){it('mount remount unmount',function(done){var memory={a:{}};var funicular=generateFunicular(memory);funicular.mount('a',memory.a,function(error,a){_chai.assert.ifError(error);_chai.assert.equal(a.id,1);_chai.assert.equal(a.stage,'mounted');_chai.assert.deepProperty(funicular.namedCarriages,'a.1');a.remount()},function(unmountError,olda,mountError,newa){_chai.assert.notEqual(olda,newa);_chai.assert.equal(olda.id,1);_chai.assert.equal(newa.id,2);_chai.assert.equal(olda.stage,'unmounted');_chai.assert.equal(newa.stage,'mounted');_chai.assert.ifError(unmountError);_chai.assert.ifError(mountError);_chai.assert.notDeepProperty(funicular.namedCarriages,'a.1');_chai.assert.deepProperty(funicular.namedCarriages,'a.2');newa.unmount()},function(error,a){_chai.assert.ifError(error);_chai.assert.equal(a.id,2);_chai.assert.equal(a.stage,'unmounted');_chai.assert.notDeepProperty(funicular.namedCarriages,'a.2');done()})});it('one parent with child',function(done){var memory={a:{childs:['b']},b:{}};var funicular=generateFunicular(memory);funicular.mount('a',memory.a,function(error,a){_chai.assert.ifError(error);_chai.assert.equal(a.id,1);_chai.assert.equal(a.childs.b.id,2);_chai.assert.equal(a.stage,'mounted');_chai.assert.equal(a.childs.b.stage,'mounted');_chai.assert.deepProperty(funicular.namedCarriages,'a.1');_chai.assert.deepProperty(funicular.namedCarriages,'b.2');a.remount()},function(unmountError,olda,mountError,newa){_chai.assert.ifError(unmountError);_chai.assert.ifError(mountError);_chai.assert.notDeepProperty(olda,'.childs.b');_chai.assert.equal(olda.id,1);_chai.assert.equal(newa.id,3);_chai.assert.equal(newa.childs.b.id,2);_chai.assert.equal(olda.stage,'unmounted');_chai.assert.equal(newa.stage,'mounted');_chai.assert.equal(newa.childs.b.stage,'mounted');_chai.assert.notDeepProperty(funicular.namedCarriages,'a.1');_chai.assert.deepProperty(funicular.namedCarriages,'a.3');_chai.assert.deepProperty(funicular.namedCarriages,'b.2');newa.unmount()},function(error,a){_chai.assert.ifError(error);_chai.assert.equal(a.id,3);_chai.assert.equal(a.stage,'unmounted');_chai.assert.notDeepProperty(funicular.namedCarriages,'b.2');_chai.assert.notDeepProperty(funicular.namedCarriages,'a.3');done()})});it('one with parent and unnamed parent',function(done){var memory={a:{childs:['b']},b:{}};var funicular=generateFunicular(memory);funicular.mount(undefined,{childs:['b']},function(error,root){_chai.assert.ifError(error);_chai.assert.equal(root.id,1);_chai.assert.equal(root.childs.b.id,2);_chai.assert.equal(root.stage,'mounted');_chai.assert.equal(root.childs.b.stage,'mounted');_chai.assert.deepProperty(funicular.unnamedCarriages,'1');_chai.assert.deepProperty(funicular.namedCarriages,'b.2');_chai.assert.deepProperty(funicular.namedCarriages,'b.0');funicular.mount('a',memory.a,function(error,a){_chai.assert.ifError(error);_chai.assert.equal(a.id,3);_chai.assert.equal(a.childs.b.id,2);_chai.assert.equal(a.stage,'mounted');_chai.assert.equal(a.childs.b.stage,'mounted');_chai.assert.deepProperty(funicular.namedCarriages,'a.3');_chai.assert.deepProperty(funicular.namedCarriages,'b.2');a.remount()},function(unmountError,olda,mountError,newa){_chai.assert.ifError(unmountError);_chai.assert.ifError(mountError);_chai.assert.notDeepProperty(olda,'.childs.b');_chai.assert.equal(olda.id,3);_chai.assert.equal(newa.id,4);_chai.assert.equal(newa.childs.b.id,2);_chai.assert.equal(olda.stage,'unmounted');_chai.assert.equal(newa.stage,'mounted');_chai.assert.equal(newa.childs.b.stage,'mounted');_chai.assert.notDeepProperty(funicular.namedCarriages,'a.3');_chai.assert.deepProperty(funicular.namedCarriages,'a.4');_chai.assert.deepProperty(funicular.namedCarriages,'b.2');newa.unmount()},function(error,a){_chai.assert.ifError(error);_chai.assert.equal(a.id,4);_chai.assert.equal(a.stage,'unmounted');_chai.assert.notDeepProperty(funicular.namedCarriages,'a.3');_chai.assert.deepProperty(funicular.namedCarriages,'b.2');root.unmount()})},null,function(error,root){_chai.assert.ifError(error);_chai.assert.equal(root.id,1);_chai.assert.equal(root.stage,'unmounted');_chai.assert.notDeepProperty(funicular.unnamedCarriages,'1');_chai.assert.notDeepProperty(funicular.namedCarriages,'b.2');done()})});it('childs remount and unmount handlers',function(done){var memory={a:{childs:['b'],childRemount:true},b:{}};var funicular=generateFunicular(memory);funicular.mount(undefined,{childs:['b']},function(error,root){funicular.mount('a',memory.a,function(error,a){_chai.assert.ifError(error);a.childs.b.remount()},function(unmountError,olda,mountError,newa){_chai.assert.ifError(unmountError);_chai.assert.ifError(mountError);_chai.assert.notDeepProperty(olda,'.childs.b');_chai.assert.equal(olda.id,3);_chai.assert.equal(newa.id,5);_chai.assert.equal(newa.childs.b.id,4);_chai.assert.equal(olda.stage,'unmounted');_chai.assert.equal(newa.stage,'mounted');_chai.assert.equal(newa.childs.b.stage,'mounted');_chai.assert.notDeepProperty(funicular.namedCarriages,'a.3');_chai.assert.notDeepProperty(funicular.namedCarriages,'b.2');_chai.assert.deepProperty(funicular.namedCarriages,'a.5');_chai.assert.deepProperty(funicular.namedCarriages,'b.4');root.unmount()},function(error,a){_chai.assert.ifError(error);_chai.assert.equal(a.id,5);_chai.assert.equal(a.stage,'unmounted');_chai.assert.notDeepProperty(funicular.namedCarriages,'a.5');_chai.assert.notDeepProperty(funicular.namedCarriages,'b.4');done()})},function(){throw new Error('this is wrong')},function(error,root){_chai.assert.ifError(error);_chai.assert.equal(root.id,1);_chai.assert.equal(root.stage,'unmounted');_chai.assert.notDeepProperty(funicular.unnamedCarriages,'1');_chai.assert.deepProperty(funicular.namedCarriages,'a.5');_chai.assert.deepProperty(funicular.namedCarriages,'b.4');funicular.namedCarriages.a[5].unmount()})})}); //# sourceMappingURL=index.js.map