mattermost-mobile/test/service/selectors/posts.test.js
Harrison Healey 249312b852 PLT-5252 Added Thread view (#239)
* Added Thread view

* Fixed added unit test

* Fixed copyright date on added file

* Moved scene-specific selector into service directory
2017-02-13 18:08:26 -03:00

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