mattermost-mobile/app/screens/select_server/select_server.test.js
Joseph Baylon 5f6fd6df7a
MM-30286 Detox/E2E: Add e2e test for MM-T3236 and added basic unit tests (#4969)
* MM-30286 Detox/E2E: Add e2e test for MM-T3236

* Fix more testID hierarchies

* Fix typo

* Fix failing test

* Remove extra lines

* Updated to use string interpolation

* Update channels list element query

* Updated channel item unit test to be more consistent

* Fix error text testID hierarchies; fix edit channel info testIDs

* Fix snap file

* Fix line return
2020-11-24 16:58:09 +08:00

83 lines
No EOL
2.9 KiB
JavaScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import React from 'react';
import SelectServer from './select_server.js';
import {renderWithReduxIntl} from 'test/testing_library';
import {fireEvent, waitFor} from '@testing-library/react-native';
describe('SelectServer', () => {
const actions = {
getPing: jest.fn(),
handleServerUrlChanged: jest.fn(),
scheduleExpiredNotification: jest.fn(),
loadConfigAndLicense: jest.fn(),
login: jest.fn(),
resetPing: jest.fn(),
setLastUpgradeCheck: jest.fn(),
setServerVersion: jest.fn(),
};
const baseProps = {
actions,
hasConfigAndLicense: true,
serverUrl: '',
};
test('should match error when URL is empty string', async () => {
const {getByTestId, getByText} = renderWithReduxIntl(
<SelectServer {...baseProps}/>,
);
const button = getByText('Connect');
fireEvent.press(button);
await waitFor(() => expect(getByTestId('select_server.error.text')).toBeTruthy());
expect(getByText('Please enter a valid server URL')).toBeTruthy();
});
test('should match error when URL is only spaces', async () => {
const {getByTestId, getByText} = renderWithReduxIntl(
<SelectServer {...baseProps}/>,
);
const urlInput = getByTestId('select_server.server_url.input');
fireEvent.changeText(urlInput, ' ');
const button = getByText('Connect');
fireEvent.press(button);
await waitFor(() => expect(getByTestId('select_server.error.text')).toBeTruthy());
expect(getByText('Please enter a valid server URL')).toBeTruthy();
});
test('should match error when URL does not start with http:// or https://', async () => {
const {getByTestId, getByText} = renderWithReduxIntl(
<SelectServer {...baseProps}/>,
);
const urlInput = getByTestId('select_server.server_url.input');
fireEvent.changeText(urlInput, 'ht://invalid:8065');
const button = getByText('Connect');
fireEvent.press(button);
await waitFor(() => expect(getByTestId('select_server.error.text')).toBeTruthy());
expect(getByText('URL must start with http:// or https://')).toBeTruthy();
});
test('should not show error when valid URL is entered', async () => {
const {getByTestId, getByText, queryByTestId} = renderWithReduxIntl(
<SelectServer {...baseProps}/>,
);
const urlInput = getByTestId('select_server.server_url.input');
fireEvent.changeText(urlInput, 'http://localhost:8065');
const button = getByText('Connect');
fireEvent.press(button);
expect(queryByTestId('select_server.error.text')).toBeNull();
await waitFor(() => expect(getByText('Connecting...')).toBeTruthy());
});
});