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