UNPKG

@girders-elements/core

Version:

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

115 lines (86 loc) 3.49 kB
'use strict';var _this=this; var _ramda=require('ramda');var _ramda2=_interopRequireDefault(_ramda); var _http=require('../http');var http=_interopRequireWildcard(_http);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};} describe('http',function(){ describe('a response',function(){ test('is a response if it has a value',function(){ expect(http.isResponse(null)).not.toBeTruthy(); expect(http.isResponse('')).not.toBeTruthy(); expect(http.isResponse([])).not.toBeTruthy(); expect(http.isResponse({A:1})).not.toBeTruthy(); expect(http.isResponse({value:1})).toBeTruthy(); expect(http.isResponse({value:2,meta:{status:500}})).toBeTruthy(); }); test('is a response if it has a status code',function(){ expect(http.isResponse({meta:{}})).not.toBeTruthy(); expect(http.isResponse({meta:{status:300}})).toBeTruthy(); }); test('is ok if it has a value, and no meta',function(){ expect(http.isOK({value:1})).toBeTruthy(); expect(http.isOK({meta:{}})).not.toBeTruthy(); }); test('is ok if it has a status of 2xx **and** it has a value',function(){ expect(http.isOK({value:1,meta:{status:222}})).toBeTruthy(); expect(http.isOK({value:1,meta:{status:300}})).not.toBeTruthy(); expect(http.isOK({value:1,meta:{status:200}})).toBeTruthy(); expect(http.isOK({meta:{status:200}})).not.toBeTruthy(); }); test('obtaining a response from a value',function(){ expect(http.asResponse(1)).toEqual({value:1}); expect(http.asResponse(1,'http://example.com')).toEqual({ value:1, meta:{ status:200, message:'OK', uri:'http://example.com', url:'http://example.com'}}); }); expect(http.failedResponse('Fail')).toEqual({ meta:{ status:999, message:'Fail'}}); expect(http.failedResponse('Fail','http://example.com')).toEqual({ meta:{ status:999, message:'Fail', uri:'http://example.com', url:'http://example.com'}}); expect(http.failedResponse('Fail',42,'http://example.com')).toEqual({ value:42, meta:{ status:999, message:'Fail', uri:'http://example.com', url:'http://example.com'}}); }); describe('flow',function(){ test('chains transformation fns on the value of a OK responise',function(){ var resp=http.asResponse(10); expect(http.flow(resp,_ramda2.default.inc,_ramda2.default.add(10))).toEqual({ value:21}); expect(http.flow(http.failedResponse('Fail'),_ramda2.default.inc,_ramda2.default.add(10))).toEqual({ meta:{ status:999, message:'Fail'}}); }); test('a transform fn can return a response',function(){ var resp=http.asResponse(10); expect( http.flow(resp,_ramda2.default.inc,function(){return http.asResponse('something');},_ramda2.default.length)). toEqual({ value:9}); expect( http.flow(resp,_ramda2.default.inc,function(){return http.failedResponse('Fail');},_ramda2.default.dec)). toEqual({ meta:{ status:999, message:'Fail'}}); }); }); describe('execute',function(){ test('faild http call returns 998 as status code',function _callee(){var response;return regeneratorRuntime.async(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0: fetch.mockReject();_context.next=3;return regeneratorRuntime.awrap( http.get('http://example.com'));case 3:response=_context.sent; expect(response.meta.status).toEqual(998);case 5:case'end':return _context.stop();}}},null,_this);}); }); });