UNPKG

@girders-elements/core

Version:

Girders Elements is an architectural framework that assists with building data-driven apps with React or React Native.

82 lines (58 loc) 3.63 kB
'use strict';var _jsxFileName='packages/core/src/__tests__/read.js',_this=this; var _enzyme=require('enzyme'); var _react=require('react');var _react2=_interopRequireDefault(_react); var _immutable=require('immutable'); var _=require('..'); var _propNames=require('../propNames');var propNames=_interopRequireWildcard(_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))newObj[key]=obj[key];}}newObj.default=obj;return newObj;}}function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}var isOfKind=_.data.element.isOfKind; describe("Reads using core subsystem's Read element",function(){ var appState={ kind:'app', content:{ kind:['__read','scene'], uri:'https://netcetera.com/test.json'}}; beforeEach(function(){ _.ui.register('app',function(_ref){var uiFor=_ref.uiFor; return _react2.default.createElement('div',{__source:{fileName:_jsxFileName,lineNumber:22}},uiFor('content')); }); _.ui.register('scene',function(){ return _react2.default.createElement('div',{__source:{fileName:_jsxFileName,lineNumber:25}},'Scene'); }); _.read.register(/test\.json$/,function(u){return( Promise.resolve({ value:{kind:'scene',title:'Scene Title'}, meta:_.http.responseMeta({url:u})}));}); _.transform.register('scene',function(scene,_ref2){var readValue=_ref2.readValue;return( scene.set('metaUrl',readValue.getIn([propNames.metadata,'url'])));}); _.enrich.register('scene',function _callee(scene,context){return regeneratorRuntime.async(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:_context.next=2;return regeneratorRuntime.awrap( sleep(55));case 2:return _context.abrupt('return', scene.set('ss',context.subsystems.enrich.name));case 3:case'end':return _context.stop();}}},null,_this);}); _.enhance.register('scene',function _callee2(scene,context){return regeneratorRuntime.async(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:_context2.next=2;return regeneratorRuntime.awrap( sleep(66));case 2:return _context2.abrupt('return', function(s){return s.set('ss-enhance',context.subsystems.enhance.name);});case 3:case'end':return _context2.stop();}}},null,_this);}); }); afterEach(function(){ _.ui.reset(); }); it('should succeed when found proper response',function _callee3(){var engine,loadingEls,html,scenes,scene,sceneEl;return regeneratorRuntime.async(function _callee3$(_context3){while(1){switch(_context3.prev=_context3.next){case 0: engine=(0,_enzyme.mount)(_react2.default.createElement(_.Engine,{initState:(0,_immutable.fromJS)(appState),__source:{fileName:_jsxFileName,lineNumber:54}})); loadingEls=engine.findWhere(function(c){return( isOfKind('__loading',c.prop('element')));}); expect(loadingEls.length).toBeGreaterThan(0); html=engine.html(); expect(html).toMatch('loading...'); expect(html).not.toMatch('Scene');_context3.next=8;return regeneratorRuntime.awrap( sleep(200));case 8: engine.update(); scenes=engine.findWhere(function(c){return isOfKind('scene',c.prop('element'));}); expect(scenes.length).toBeGreaterThan(0); scene=scenes.first(); sceneEl=scene.prop('element'); expect(sceneEl.get('title')).toEqual('Scene Title'); expect(sceneEl.get('metaUrl')).toEqual('https://netcetera.com/test.json'); expect(sceneEl.get('ss')).toEqual('enrich'); expect(sceneEl.get('ss-enhance')).toEqual('enhance');case 17:case'end':return _context3.stop();}}},null,_this);}); }); function sleep(ms){ return new Promise(function(resolve){return setTimeout(resolve,ms);}); }