UNPKG

react-redux-fetch

Version:

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

142 lines (116 loc) 3.69 kB
'use strict'; var _chai = require('chai'); var _chai2 = _interopRequireDefault(_chai); var _seamlessImmutable = require('seamless-immutable'); var _seamlessImmutable2 = _interopRequireDefault(_seamlessImmutable); var _actionTypes = require('../constants/actionTypes'); var _getReducer = require('./getReducer'); var _getReducer2 = _interopRequireDefault(_getReducer); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } _chai2.default.should(); describe('getReducer', function () { describe('@@INIT', function () { var newState = (0, _getReducer2.default)(undefined, {}); it('should set pending to false', function () { newState.pending.should.equal(false); }); it('should set pending to false', function () { newState.fulfilled.should.equal(false); }); it('should set rejected to false', function () { newState.rejected.should.equal(false); }); }); describe('react-redux-fetch/GET_REQUEST', function () { var state = (0, _seamlessImmutable2.default)({ toGet: { pending: true, fulfilled: false, value: [{ id: 1 }, { id: 2 }, { id: 3 }] } }); var action = { type: _actionTypes.FETCH.for('get').REQUEST, key: 'toGet', request: { meta: {} } }; var newState = (0, _getReducer2.default)(state.toGet, action); it('should set pending to true', function () { newState.pending.should.equal(true); }); it('should set pending to false', function () { newState.fulfilled.should.equal(false); }); it('should set rejected to false', function () { newState.rejected.should.equal(false); }); }); describe('react-redux-fetch/GET_FULFIL', function () { var simpleState = (0, _seamlessImmutable2.default)({ myValue: { pending: true, fulfilled: false, rejected: false } }); var simpleAction = { type: _actionTypes.FETCH.for('get').FULFILL, key: 'myValue', value: { id: 2, text: 'new text' }, request: { meta: null } }; it('should store the new value', function () { (0, _getReducer2.default)(simpleState.myValue, simpleAction).should.eql({ pending: false, fulfilled: true, rejected: false, meta: null, value: { id: 2, text: 'new text' } }); }); describe('with "addToList" meta', function () { var state = (0, _seamlessImmutable2.default)({ myList: { pending: true, fulfilled: false, value: [{ id: 1, text: 'old text' }, { id: 2, text: 'old text' }, { id: 3, text: 'old text' }] } }); var action = { type: _actionTypes.FETCH.for('get').FULFILL, key: 'myList', value: { id: 2, text: 'new text' }, request: { meta: { addToList: { idName: 'id', id: 2 } } } }; var newState = (0, _getReducer2.default)(state.myList, action); it('should replace the item in the list', function () { newState.value.should.eql([{ id: 1, text: 'old text' }, { id: 2, text: 'new text' }, { id: 3, text: 'old text' }]); }); it('should set fulfilled to true', function () { newState.fulfilled.should.equal(true); }); it('should set pending to false', function () { newState.pending.should.equal(false); }); it('should set rejected to false', function () { newState.rejected.should.equal(false); }); }); }); });