UNPKG

twreporter-redux

Version:

redux actions and reducers for twreporter website

186 lines (151 loc) 5.79 kB
'use strict'; var _reduxStateFields = require('../../constants/redux-state-fields'); var _reduxStateFields2 = _interopRequireDefault(_reduxStateFields); var _entities = require('../entities'); var _entities2 = _interopRequireDefault(_entities); 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-2', slug: 'topic-slug-2', full: false }; describe('entities reducer', function () { it('should return the initial state', function () { (0, _chai.expect)((0, _entities2.default)({}, {})).to.deep.equal({}); }); it('should handle GET_CONTENT_FOR_INDEX_PAGE', function () { var _payload; (0, _chai.expect)((0, _entities2.default)({ posts: _defineProperty({}, post1.slug, _.cloneDeep(post1)), topics: _defineProperty({}, fullTopic.slug, _.cloneDeep(fullTopic)) }, { type: _actionTypes2.default.GET_CONTENT_FOR_INDEX_PAGE, payload: (_payload = {}, _defineProperty(_payload, _reduxStateFields2.default.latest, _.cloneDeep([post1, post2])), _defineProperty(_payload, _reduxStateFields2.default.editorPicks, _.cloneDeep([post1])), _defineProperty(_payload, _reduxStateFields2.default.reviews, _.cloneDeep([post3])), _defineProperty(_payload, _reduxStateFields2.default.latestTopic, _.cloneDeep(fullTopic)), _defineProperty(_payload, _reduxStateFields2.default.topics, _.cloneDeep([nonFullTopic])), _defineProperty(_payload, _reduxStateFields2.default.photos, _.cloneDeep([post1, post4])), _defineProperty(_payload, _reduxStateFields2.default.infographics, _.cloneDeep([post2, post3])), _payload) })).to.deep.equal({ posts: { 'post-slug-1': post1, 'post-slug-2': post2, 'post-slug-3': post3, 'post-slug-4': post4 }, topics: { 'topic-slug-1': _.merge({}, fullTopic, { relateds: [post3.slug, post4.slug] }), 'topic-slug-2': nonFullTopic } }); }); it('should handle GET_TOPICS_FOR_INDEX_PAGE', function () { (0, _chai.expect)((0, _entities2.default)({}, { type: _actionTypes2.default.GET_TOPICS_FOR_INDEX_PAGE, payload: { items: _.cloneDeep([nonFullTopic]) } })).to.deep.equal({ topics: _defineProperty({}, nonFullTopic.slug, nonFullTopic) }); }); it('should handle GET_EDITOR_PICKED_POSTS', function () { (0, _chai.expect)((0, _entities2.default)({}, { type: _actionTypes2.default.GET_EDITOR_PICKED_POSTS, payload: { items: _.cloneDeep([post1]) } })).to.deep.equal({ posts: _defineProperty({}, post1.slug, post1) }); }); it('should handle GET_PHOTOGRAPHY_POSTS_FOR_INDEX_PAGE', function () { (0, _chai.expect)((0, _entities2.default)({}, { type: _actionTypes2.default.GET_PHOTOGRAPHY_POSTS_FOR_INDEX_PAGE, payload: { items: _.cloneDeep([post1]) } })).to.deep.equal({ posts: _defineProperty({}, post1.slug, post1) }); }); it('should handle GET_INFOGRAPHIC_POSTS_FOR_INDEX_PAGE', function () { (0, _chai.expect)((0, _entities2.default)({}, { type: _actionTypes2.default.GET_INFOGRAPHIC_POSTS_FOR_INDEX_PAGE, payload: { items: _.cloneDeep([post1]) } })).to.deep.equal({ posts: _defineProperty({}, post1.slug, post1) }); }); it('should handle GET_LISTED_POSTS', function () { (0, _chai.expect)((0, _entities2.default)({}, { type: _actionTypes2.default.GET_LISTED_POSTS, payload: { items: _.cloneDeep([post1]) } })).to.deep.equal({ posts: _defineProperty({}, post1.slug, post1) }); }); it('should handle GET_A_FULL_POST', function () { var _posts6; var post = _.cloneDeep(post1); post.relateds = [post2, post3]; post.topics = nonFullTopic; (0, _chai.expect)((0, _entities2.default)({}, { type: _actionTypes2.default.GET_A_FULL_POST, payload: post })).to.deep.equal({ posts: (_posts6 = {}, _defineProperty(_posts6, post1.slug, _.merge({}, post1, { relateds: [post2.slug, post3.slug], topics: nonFullTopic.slug })), _defineProperty(_posts6, post2.slug, post2), _defineProperty(_posts6, post3.slug, post3), _posts6), topics: _defineProperty({}, nonFullTopic.slug, nonFullTopic) }); }); it('should handle GET_A_FULL_TOPIC', function () { var _posts7; var topic = _.cloneDeep(fullTopic); (0, _chai.expect)((0, _entities2.default)({}, { type: _actionTypes2.default.GET_A_FULL_TOPIC, payload: topic })).to.deep.equal({ posts: (_posts7 = {}, _defineProperty(_posts7, post3.slug, post3), _defineProperty(_posts7, post4.slug, post4), _posts7), topics: _defineProperty({}, topic.slug, topic) }); }); });