Files
mattermost-mobile/app/components/channel_loader/channel_loader.test.js
Mattermost Build 49f86826e1 Update dependencies (#5686) (#5687)
* Update dependencies

* Fix unsigned builds

(cherry picked from commit ada6be9b7a)

Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
2021-09-22 14:00:45 -03:00

56 lines
1.9 KiB
JavaScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {shallow} from 'enzyme';
import React from 'react';
import Preferences from '@mm-redux/constants/preferences';
import ChannelLoader from './channel_loader';
jest.useFakeTimers();
describe('ChannelLoader', () => {
const baseProps = {
channelIsLoading: true,
theme: Preferences.THEMES.denim,
};
test('should match snapshot', () => {
const wrapper = shallow(<ChannelLoader {...baseProps}/>);
expect(wrapper.getElement()).toMatchSnapshot();
});
test('should call setTimeout and setInterval for showIndicator and retryLoad on mount', () => {
shallow(<ChannelLoader {...baseProps}/>);
const setTimeout = jest.spyOn(global, 'setTimeout');
const setInterval = jest.spyOn(global, 'setInterval');
expect(setTimeout).not.toHaveBeenCalled();
expect(setInterval).not.toHaveBeenCalled();
const props = {
...baseProps,
retryLoad: jest.fn(),
};
const wrapper = shallow(<ChannelLoader {...props}/>);
const instance = wrapper.instance();
expect(setTimeout).toHaveBeenCalledWith(instance.showIndicator, 10000);
expect(setInterval).toHaveBeenCalledWith(props.retryLoad, 10000);
});
test('should clear timer and interval on unmount', () => {
const props = {
...baseProps,
retryLoad: jest.fn(),
};
const wrapper = shallow(<ChannelLoader {...props}/>);
const clearTimeout = jest.spyOn(global, 'clearTimeout');
const clearInterval = jest.spyOn(global, 'clearInterval');
const instance = wrapper.instance();
instance.componentWillUnmount();
expect(clearTimeout).toHaveBeenCalledWith(instance.stillLoadingTimeout);
expect(clearInterval).toHaveBeenCalledWith(instance.retryLoadInterval);
});
});