UNPKG

twreporter-redux

Version:

redux actions and reducers for twreporter website

129 lines (98 loc) 6.62 kB
'use strict'; var _reduxStateFields = require('../../constants/redux-state-fields'); var _reduxStateFields2 = _interopRequireDefault(_reduxStateFields); var _indexPage = require('../index-page'); var _indexPage2 = _interopRequireDefault(_indexPage); var _actionTypes = require('../../constants/action-types'); var _actionTypes2 = _interopRequireDefault(_actionTypes); var _cloneDeep = require('lodash/cloneDeep'); var _cloneDeep2 = _interopRequireDefault(_cloneDeep); var _merge = require('lodash/merge'); var _merge2 = _interopRequireDefault(_merge); var _chai = require('chai'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /* global describe, it*/ // lodash var _ = { cloneDeep: _cloneDeep2.default, merge: _merge2.default }; var post1 = { id: 'post-id-1', slug: 'post-slug-1' }; var post2 = { id: 'post-id-2', slug: 'post-slug-2' }; var post3 = { id: 'post-id-3', slug: 'post-slug-3' }; var post4 = { id: 'post-id-4', slug: 'post-slug-4' }; var fullTopic = { id: 'topic-id-1', slug: 'topic-slug-1', relateds: [post3, post4], full: true }; var nonFullTopic = { id: 'topic-id-1', slug: 'topic-slug-1', full: false }; describe('index-page reducer', function () { it('should return the initial state', function () { (0, _chai.expect)((0, _indexPage2.default)({}, {})).to.deep.equal({}); }); it('should handle GET_CONTENT_FOR_INDEX_PAGE', function () { var _payload, _expect$to$deep$equal; (0, _chai.expect)((0, _indexPage2.default)({}, { type: _actionTypes2.default.GET_CONTENT_FOR_INDEX_PAGE, payload: (_payload = {}, _defineProperty(_payload, _reduxStateFields2.default.latest, _.cloneDeep([post1, post2])), _defineProperty(_payload, _reduxStateFields2.default.editorPicks, _.cloneDeep([post4])), _defineProperty(_payload, _reduxStateFields2.default.reviews, _.cloneDeep([post3])), _defineProperty(_payload, _reduxStateFields2.default.latestTopic, _.cloneDeep([fullTopic])), _defineProperty(_payload, _reduxStateFields2.default.topics, _.cloneDeep([fullTopic, nonFullTopic])), _defineProperty(_payload, _reduxStateFields2.default.photos, _.cloneDeep([post1, post4])), _defineProperty(_payload, _reduxStateFields2.default.infographics, _.cloneDeep([post2, post3])), _payload) })).to.deep.equal((_expect$to$deep$equal = {}, _defineProperty(_expect$to$deep$equal, _reduxStateFields2.default.latest, [post1.slug, post2.slug]), _defineProperty(_expect$to$deep$equal, _reduxStateFields2.default.editorPicks, [post4.slug]), _defineProperty(_expect$to$deep$equal, _reduxStateFields2.default.reviews, [post3.slug]), _defineProperty(_expect$to$deep$equal, _reduxStateFields2.default.latestTopic, fullTopic.slug), _defineProperty(_expect$to$deep$equal, _reduxStateFields2.default.topics, [fullTopic.slug, nonFullTopic.slug]), _defineProperty(_expect$to$deep$equal, _reduxStateFields2.default.photos, [post1.slug, post4.slug]), _defineProperty(_expect$to$deep$equal, _reduxStateFields2.default.infographics, [post2.slug, post3.slug]), _defineProperty(_expect$to$deep$equal, 'error', null), _expect$to$deep$equal)); }); it('should handle ERROR_TO_GET_CONTENT_FOR_INDEX_PAGE', function () { var _reducer, _expect$to$deep$equal2; var err = new Error('error occurs'); (0, _chai.expect)((0, _indexPage2.default)((_reducer = {}, _defineProperty(_reducer, _reduxStateFields2.default.latest, [post1.slug, post2.slug]), _defineProperty(_reducer, _reduxStateFields2.default.editorPicks, [post4.slug]), _defineProperty(_reducer, _reduxStateFields2.default.reviews, [post3.slug]), _defineProperty(_reducer, _reduxStateFields2.default.latestTopic, fullTopic.slug), _defineProperty(_reducer, _reduxStateFields2.default.topics, [fullTopic.slug, nonFullTopic.slug]), _defineProperty(_reducer, _reduxStateFields2.default.photos, [post1.slug, post4.slug]), _defineProperty(_reducer, _reduxStateFields2.default.infographics, [post2.slug, post3.slug]), _defineProperty(_reducer, 'error', null), _reducer), { type: _actionTypes2.default.ERROR_TO_GET_INDEX_PAGE_CONTENT, error: err })).to.deep.equal((_expect$to$deep$equal2 = {}, _defineProperty(_expect$to$deep$equal2, _reduxStateFields2.default.latest, [post1.slug, post2.slug]), _defineProperty(_expect$to$deep$equal2, _reduxStateFields2.default.editorPicks, [post4.slug]), _defineProperty(_expect$to$deep$equal2, _reduxStateFields2.default.reviews, [post3.slug]), _defineProperty(_expect$to$deep$equal2, _reduxStateFields2.default.latestTopic, fullTopic.slug), _defineProperty(_expect$to$deep$equal2, _reduxStateFields2.default.topics, [fullTopic.slug, nonFullTopic.slug]), _defineProperty(_expect$to$deep$equal2, _reduxStateFields2.default.photos, [post1.slug, post4.slug]), _defineProperty(_expect$to$deep$equal2, _reduxStateFields2.default.infographics, [post2.slug, post3.slug]), _defineProperty(_expect$to$deep$equal2, 'error', err), _expect$to$deep$equal2)); }); it('should handle GET_TOPICS_FOR_INDEX_PAGE', function () { (0, _chai.expect)((0, _indexPage2.default)({}, { type: _actionTypes2.default.GET_TOPICS_FOR_INDEX_PAGE, payload: { items: _.cloneDeep([nonFullTopic, fullTopic]) } })).to.deep.equal(_defineProperty({}, _reduxStateFields2.default.topics, [nonFullTopic.slug, fullTopic.slug])); }); it('should handle GET_PHOTOGRAPHY_POSTS_FOR_INDEX_PAGE', function () { (0, _chai.expect)((0, _indexPage2.default)({}, { type: _actionTypes2.default.GET_PHOTOGRAPHY_POSTS_FOR_INDEX_PAGE, payload: { items: _.cloneDeep([post1]) } })).to.deep.equal(_defineProperty({}, _reduxStateFields2.default.photos, [post1.slug])); }); it('should handle GET_INFOGRAPHIC_POSTS_FOR_INDEX_PAGE', function () { (0, _chai.expect)((0, _indexPage2.default)({}, { type: _actionTypes2.default.GET_INFOGRAPHIC_POSTS_FOR_INDEX_PAGE, payload: { items: _.cloneDeep([post1]) } })).to.deep.equal(_defineProperty({}, _reduxStateFields2.default.infographics, [post1.slug])); }); it('should handle GET_EDITOR_PICKED_POSTS', function () { (0, _chai.expect)((0, _indexPage2.default)({}, { type: _actionTypes2.default.GET_EDITOR_PICKED_POSTS, payload: { items: _.cloneDeep([post1]) } })).to.deep.equal(_defineProperty({}, _reduxStateFields2.default.editorPicks, [post1.slug])); }); });