twreporter-redux
Version:
redux actions and reducers for twreporter website
129 lines (98 loc) • 6.62 kB
JavaScript
'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]));
});
});