@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
JavaScript
;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);});
}