* Added Thread view * Fixed added unit test * Fixed copyright date on added file * Moved scene-specific selector into service directory
74 lines
2.8 KiB
JavaScript
74 lines
2.8 KiB
JavaScript
// Copyright (c) 2017 Mattermost, Inc. All Rights Reserved.
|
|
// See License.txt for license information.
|
|
|
|
import assert from 'assert';
|
|
|
|
import {makeGetPostsForThread} from 'service/selectors/entities/posts';
|
|
import deepFreezeAndThrowOnMutation from 'service/utils/deep_freeze';
|
|
|
|
describe('Selectors.Posts', () => {
|
|
describe('makeGetPostsForThread', () => {
|
|
const posts = {
|
|
a: {id: 'a', channel_id: '1'},
|
|
b: {id: 'b', channel_id: '1'},
|
|
c: {id: 'c', root_id: 'a', channel_id: '1'},
|
|
d: {id: 'd', root_id: 'b', channel_id: '1'},
|
|
e: {id: 'e', root_id: 'a', channel_id: '1'},
|
|
f: {id: 'f', channel_id: 'f'}
|
|
};
|
|
const testState = deepFreezeAndThrowOnMutation({
|
|
entities: {
|
|
posts: {
|
|
posts,
|
|
postsByChannel: {
|
|
1: ['a', 'b', 'c', 'd', 'e', 'f']
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
it('should return single post with no children', () => {
|
|
const getPostsForThread = makeGetPostsForThread();
|
|
|
|
assert.deepEqual(getPostsForThread(testState, {channelId: '1', rootId: 'f'}), [posts.f]);
|
|
});
|
|
|
|
it('should return post with children', () => {
|
|
const getPostsForThread = makeGetPostsForThread();
|
|
|
|
assert.deepEqual(getPostsForThread(testState, {channelId: '1', rootId: 'a'}), [posts.a, posts.c, posts.e]);
|
|
});
|
|
|
|
it('should return memoized result for identical props', () => {
|
|
const getPostsForThread = makeGetPostsForThread();
|
|
|
|
const props = {channelId: '1', rootId: 'a'};
|
|
const result = getPostsForThread(testState, props);
|
|
|
|
assert.equal(result, getPostsForThread(testState, props));
|
|
});
|
|
|
|
it('should return different result for different props', () => {
|
|
const getPostsForThread = makeGetPostsForThread();
|
|
|
|
const result = getPostsForThread(testState, {channelId: '1', rootId: 'a'});
|
|
|
|
assert.notEqual(result, getPostsForThread(testState, {channelId: '1', rootId: 'a'}));
|
|
assert.deepEqual(result, getPostsForThread(testState, {channelId: '1', rootId: 'a'}));
|
|
});
|
|
|
|
it('should return memoized result for multiple selectors with different props', () => {
|
|
const getPostsForThread1 = makeGetPostsForThread();
|
|
const getPostsForThread2 = makeGetPostsForThread();
|
|
|
|
const props1 = {channelId: '1', rootId: 'a'};
|
|
const result1 = getPostsForThread1(testState, props1);
|
|
|
|
const props2 = {channelId: '1', rootId: 'b'};
|
|
const result2 = getPostsForThread2(testState, props2);
|
|
|
|
assert.equal(result1, getPostsForThread1(testState, props1));
|
|
assert.equal(result2, getPostsForThread2(testState, props2));
|
|
});
|
|
});
|
|
});
|