UNPKG

react-redux-fetch

Version:

A declarative and customizable way to fetch data for React components and manage that data in the Redux state

140 lines (118 loc) 3.79 kB
'use strict'; var _chai = require('chai'); var _chai2 = _interopRequireDefault(_chai); var _actionTypes = require('../constants/actionTypes'); var _buildActionsFromMappings = require('./buildActionsFromMappings'); var _buildActionsFromMappings2 = _interopRequireDefault(_buildActionsFromMappings); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } _chai2.default.should(); describe('buildActionsFromMappings', function () { describe('basic mapping', function () { var basicMapping = [{ resource: 'basic', request: { url: 'http://basic.url' } }]; var actions = (0, _buildActionsFromMappings2.default)(basicMapping); it('should return an object with 1 function', function () { actions.should.be.an('object'); var actionNames = Object.keys(actions); actionNames.should.have.length(1); actions[actionNames[0]].should.be.a('function'); }); describe('the returned function', function () { it('should have the correct name', function () { actions.should.have.property('basicGet'); }); it('should return an object', function () { actions.basicGet().should.be.an('object'); }); it('should return a correct redux action', function () { actions.basicGet().should.eql({ type: _actionTypes.FETCH.for('get').REQUEST, method: 'get', request: { url: 'http://basic.url' }, resource: { name: 'basic' } }); }); }); }); describe('2 basic mappings', function () { var basicMapping2 = [{ resource: 'basic', request: { url: 'http://basic.url' } }, { resource: 'basic2', request: { url: 'http://basic2.url' } }]; var actions = (0, _buildActionsFromMappings2.default)(basicMapping2); it('should return an object with 2 function', function () { actions.should.be.an('object'); var actionNames = Object.keys(actions); actionNames.should.have.length(2); actions[actionNames[0]].should.be.a('function'); actions[actionNames[1]].should.be.a('function'); }); }); describe('mapping with resource object', function () { var resourceObjectMapping = [{ resource: { name: 'resourceObjectMapping', action: 'myRequest' }, request: { url: 'http://basic.url' } }]; var actions = (0, _buildActionsFromMappings2.default)(resourceObjectMapping); describe('the returned function', function () { it('should return a correct redux action', function () { actions.myRequestGet().should.eql({ type: _actionTypes.FETCH.for('get').REQUEST, method: 'get', request: { url: 'http://basic.url' }, resource: { name: 'resourceObjectMapping', action: 'myRequest' } }); }); }); }); describe('mapping with request function', function () { var requestFnMapping = [{ resource: 'requestFnMapping', request: function request(id) { return { url: 'http://basic.url/' + id }; } }]; var actions = (0, _buildActionsFromMappings2.default)(requestFnMapping); describe('the returned function', function () { it('should return a correct redux action', function () { actions.requestFnMappingGet(555).should.eql({ type: _actionTypes.FETCH.for('get').REQUEST, method: 'get', request: { url: 'http://basic.url/555' }, resource: { name: 'requestFnMapping' } }); }); }); }); });