mattermost-mobile/app/components/global_threads/thread_item/thread_item.test.tsx
Dean Whillier fb8238ab0b
[MM-37553] Update default themes (#5648)
* new themes and theme type updates

* update theme processing

port newer functionality from webapp

* update theme UI

including new svg-based thumbnail

* lint fixes

* update snapshots and tests

* update theme tile border approach

* remove unused path component

* remove old variable typo

* remove old variable type from theme type

* lint and snapshot updates

* update snapshots
2021-09-03 10:50:24 -04:00

113 lines
3.6 KiB
TypeScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {shallow} from 'enzyme';
import React from 'react';
import {Text} from 'react-native';
import * as navigationActions from '@actions/navigation';
import {THREAD} from '@constants/screen';
import {Preferences} from '@mm-redux/constants';
import {Channel} from '@mm-redux/types/channels';
import {Post} from '@mm-redux/types/posts';
import {UserThread} from '@mm-redux/types/threads';
import {UserProfile} from '@mm-redux/types/users';
import {intl} from '@test/intl-test-helper';
import {ThreadItem} from './thread_item';
describe('Global Thread Item', () => {
const testID = 'thread_item';
const baseProps = {
actions: {
getPost: jest.fn(),
getPostThread: jest.fn(),
selectPost: jest.fn(),
},
channel: {
display_name: 'CHANNEL 1',
} as Channel,
intl,
post: {
id: 'post1',
} as Post,
threadId: 'post1',
testID,
theme: Preferences.THEMES.denim,
thread: {
id: 'post1',
unread_replies: 5,
} as UserThread,
threadStarter: {
id: 'user1',
} as UserProfile,
};
const testIDPrefix = `${testID}.post1`;
test('Should render thread item with unread messages dot', () => {
const wrapper = shallow(
<ThreadItem
{...baseProps}
/>,
);
expect(wrapper.getElement()).toMatchSnapshot();
expect(wrapper.find({testID: `${testIDPrefix}.unread_dot`}).exists()).toBeTruthy();
expect(wrapper.find({testID: `${testIDPrefix}.unread_mentions`}).exists()).toBeFalsy();
expect(wrapper.find({testID: `${testIDPrefix}.footer`}).exists()).toBeTruthy();
});
test('Should show unread mentions count', () => {
const props = {
...baseProps,
thread: {
...baseProps.thread,
unread_mentions: 5,
},
};
const wrapper = shallow(
<ThreadItem
{...props}
/>,
);
expect(wrapper.getElement()).toMatchSnapshot();
expect(wrapper.find({testID: `${testIDPrefix}.unread_dot`}).exists()).toBeFalsy();
const mentionBadge = wrapper.find({testID: `${testIDPrefix}.unread_mentions`}).at(0);
expect(mentionBadge.exists()).toBeTruthy();
expect(mentionBadge.find(Text).children().text().trim()).toBe('5');
});
test('Should show unread mentions as 99+ when over 99', () => {
const props = {
...baseProps,
thread: {
...baseProps.thread,
unread_mentions: 511,
},
};
const wrapper = shallow(
<ThreadItem
{...props}
/>,
);
const mentionBadge = wrapper.find({testID: `${testIDPrefix}.unread_mentions`}).at(0);
expect(mentionBadge.find(Text).children().text().trim()).toBe('99+');
});
test('Should goto threads when pressed on thread item', () => {
const goToScreen = jest.spyOn(navigationActions, 'goToScreen');
const wrapper = shallow(
<ThreadItem
{...baseProps}
/>,
);
const threadItem = wrapper.find({testID: `${testIDPrefix}.item`});
expect(threadItem.exists()).toBeTruthy();
threadItem.simulate('press');
expect(goToScreen).toHaveBeenCalledWith(THREAD, expect.anything(), expect.anything());
});
});