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