mattermost-mobile/app/components/edit_channel_info/edit_channel_info.test.js
Miguel Alatzar 2d81b497cf [MM-23520] Port mattermost-redux (#4088)
* Remove mattermost-redux

* Move mm-redux files into app/redux

* Add @redux path to tsconfig.json

* Fix imports

* Install missing dependencies

* Fix tsc errors

* Fix i18n_utils test

* Fix more imports

* Remove redux websocket

* Fix tests

* Rename @redux

* Apply changes from mattermost-redux PR 1103

* Remove mattermost-redux mention in template

* Add missing imports

* Rename app/redux/ to app/mm-redux/

* Remove test file

* Fix fetching Sidebar GM profiles

Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
2020-04-17 21:12:09 -07:00

94 lines
No EOL
3.1 KiB
JavaScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import React from 'react';
import {shallow} from 'enzyme';
import Preferences from '@mm-redux/constants/preferences';
import Autocomplete from 'app/components/autocomplete';
import EditChannelInfo from './edit_channel_info';
describe('EditChannelInfo', () => {
const baseProps = {
theme: Preferences.THEMES.default,
deviceWidth: 400,
deviceHeight: 600,
channelType: 'O',
enableRightButton: jest.fn(),
saving: false,
editing: true,
error: '',
displayName: 'display_name',
currentTeamUrl: '/team_a',
channelURL: '/team_a/channels/channel_a',
purpose: 'purpose',
header: 'header',
onDisplayNameChange: jest.fn(),
onChannelURLChange: jest.fn(),
onPurposeChange: jest.fn(),
onHeaderChange: jest.fn(),
oldDisplayName: 'old_display_name',
oldChannelURL: '/team_a/channels/channel_old',
oldHeader: 'old_header',
oldPurpose: 'old_purpose',
isLandscape: true,
};
test('should match snapshot', () => {
const wrapper = shallow(
<EditChannelInfo {...baseProps}/>,
);
expect(wrapper.getElement()).toMatchSnapshot();
});
test('should have called onHeaderChangeText on text change from Autocomplete', () => {
const wrapper = shallow(
<EditChannelInfo {...baseProps}/>,
);
const instance = wrapper.instance();
instance.enableRightButton = jest.fn();
const autocomplete = wrapper.find(Autocomplete);
expect(autocomplete.exists()).toEqual(true);
expect(autocomplete.props().value).toEqual('header');
expect(autocomplete.props().cursorPosition).toEqual(6);
expect(autocomplete.props().nestedScrollEnabled).toEqual(true);
autocomplete.props().onChangeText('header');
expect(baseProps.onHeaderChange).toHaveBeenCalledTimes(1);
expect(baseProps.onHeaderChange).toHaveBeenCalledWith('header');
expect(instance.enableRightButton).toHaveBeenCalledTimes(1);
expect(instance.enableRightButton).toHaveBeenCalledWith(true);
});
test('should call scrollHeaderToTop', () => {
const wrapper = shallow(
<EditChannelInfo {...baseProps}/>,
);
const instance = wrapper.instance();
instance.scrollHeaderToTop = jest.fn();
expect(instance.scrollHeaderToTop).not.toHaveBeenCalled();
wrapper.setState({keyboardVisible: false});
instance.onHeaderFocus();
expect(instance.scrollHeaderToTop).not.toHaveBeenCalled();
wrapper.setState({keyboardVisible: true});
instance.onHeaderFocus();
expect(instance.scrollHeaderToTop).toHaveBeenCalledTimes(1);
wrapper.setState({headerHasFocus: false});
instance.onKeyboardDidShow();
expect(instance.scrollHeaderToTop).toHaveBeenCalledTimes(1);
wrapper.setState({headerHasFocus: true});
instance.onKeyboardDidShow();
expect(instance.scrollHeaderToTop).toHaveBeenCalledTimes(2);
});
});