text: // 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 'mattermost-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);
      });
  });