UNPKG

react-redux-fetch

Version:

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

136 lines (109 loc) 3.44 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 _deleteReducer = require('./deleteReducer'); var _deleteReducer2 = _interopRequireDefault(_deleteReducer); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } _chai2.default.should(); describe('deleteReducer', function () { describe('@@INIT', function () { var newState = (0, _deleteReducer2.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/DELETE_REQUEST', function () { var state = (0, _seamlessImmutable2.default)({ toDelete: { pending: true, fulfilled: false, value: [{ id: 1 }, { id: 2 }, { id: 3 }] } }); var action = { type: _actionTypes.FETCH.for('delete').REQUEST, key: 'toDelete', request: { meta: {} } }; var newState = (0, _deleteReducer2.default)(state.toDelete, 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/DELETE_FULFIL', function () { var state = (0, _seamlessImmutable2.default)({ myList: { pending: true, fulfilled: false, value: [{ id: 1 }, { id: 2 }, { id: 3 }] } }); var action = { type: _actionTypes.FETCH.for('delete').FULFILL, key: 'myList', request: { meta: { removeFromList: { idName: 'id', id: 2 } } } }; var newState = (0, _deleteReducer2.default)(state.myList, action); it('should remove the item from the list', function () { newState.value.should.eql([{ id: 1 }, { id: 3 }]); }); 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); }); var stateWithoutValue = (0, _seamlessImmutable2.default)({ myList: { pending: false, fulfilled: true } }); var actionWithValue = { type: _actionTypes.FETCH.for('delete').FULFILL, key: 'myList', value: { id: 2 }, request: { meta: { removeFromList: { idName: 'id', id: 2 } } } }; var newState2 = (0, _deleteReducer2.default)(stateWithoutValue.myList, actionWithValue); it('should set the state value to the action value if the state has no value', function () { newState2.value.should.eql({ id: 2 }); }); }); });