UNPKG

@brightlayer-ui/react-native-auth-workflow

Version:

Re-usable workflow components for Authentication and Registration within Eaton applications.

77 lines (76 loc) 4.89 kB
import React from 'react'; import { render, cleanup, fireEvent } from '@testing-library/react-native'; import '@testing-library/jest-dom'; import { AuthContextProvider } from '../../contexts'; import { authContextProviderProps } from '../../testUtils'; import { LoginScreen } from '../../screens/LoginScreen'; import { Provider as PaperProvider } from 'react-native-paper'; import '@testing-library/jest-native/extend-expect'; afterEach(cleanup); describe('LoginScreen', () => { test('renders all input fields with correct labels', () => { const { getByTestId } = render(React.createElement(AuthContextProvider, Object.assign({}, authContextProviderProps), React.createElement(PaperProvider, null, React.createElement(LoginScreen, null)))); expect(getByTestId('blui-login-username-text-field')).toBeTruthy(); expect(getByTestId('blui-login-password-text-field')).toBeTruthy(); expect(getByTestId('blui-login-remember-me-checkbox')).toBeTruthy(); expect(getByTestId('blui-login-login-button')).toBeTruthy(); expect(getByTestId('blui-login-forgot-password-label')).toBeTruthy(); expect(getByTestId('blui-login-self-register-label')).toBeTruthy(); expect(getByTestId('blui-login-contact-support-label')).toBeTruthy(); }); test('triggers forgot password function when forgot password label is pressed', () => { const mockNavigate = jest.fn(); const { getByTestId } = render(React.createElement(AuthContextProvider, Object.assign({}, authContextProviderProps, { navigate: mockNavigate }), React.createElement(PaperProvider, null, React.createElement(LoginScreen, null)))); fireEvent.press(getByTestId('blui-login-forgot-password-label')); expect(mockNavigate).toHaveBeenCalled(); }); test('triggers self register function when self register label is pressed', () => { const mockNavigate = jest.fn(); const { getByTestId } = render(React.createElement(AuthContextProvider, Object.assign({}, authContextProviderProps, { navigate: mockNavigate }), React.createElement(PaperProvider, null, React.createElement(LoginScreen, null)))); fireEvent.press(getByTestId('blui-login-self-register-label')); expect(mockNavigate).toHaveBeenCalled(); }); test('triggers contact support function when contact support label is pressed', () => { const mockNavigate = jest.fn(); const { getByTestId } = render(React.createElement(AuthContextProvider, Object.assign({}, authContextProviderProps, { navigate: mockNavigate }), React.createElement(PaperProvider, null, React.createElement(LoginScreen, null)))); fireEvent.press(getByTestId('blui-login-contact-support-label')); expect(mockNavigate).toHaveBeenCalled(); }); test('checks if remember me checkbox is selected', () => { const { getByTestId } = render(React.createElement(AuthContextProvider, Object.assign({}, authContextProviderProps), React.createElement(PaperProvider, null, React.createElement(LoginScreen, null)))); const checkbox = getByTestId('blui-login-remember-me-checkbox'); expect(checkbox.props.accessibilityState.checked).toBe(false); fireEvent.press(checkbox); expect(checkbox.props.accessibilityState.checked).toBe(true); }); test('triggers onSubmitEditing when pressing enter key on username field', () => { const mockSubmitEditing = jest.fn(); const { getByTestId } = render(React.createElement(AuthContextProvider, Object.assign({}, authContextProviderProps), React.createElement(PaperProvider, null, React.createElement(LoginScreen, { usernameTextFieldProps: { onSubmitEditing: mockSubmitEditing } })))); const usernameInput = getByTestId('blui-login-username-text-field'); fireEvent.changeText(getByTestId('blui-login-username-text-field'), 'email@email.com'); fireEvent(usernameInput, 'submitEditing'); expect(mockSubmitEditing).toHaveBeenCalled(); }); test('triggers onSubmitEditing when pressing enter key on password field', () => { const mockSubmitEditing = jest.fn(); const { getByTestId } = render(React.createElement(AuthContextProvider, Object.assign({}, authContextProviderProps), React.createElement(PaperProvider, null, React.createElement(LoginScreen, { passwordTextFieldProps: { onSubmitEditing: mockSubmitEditing } })))); const passwordInput = getByTestId('blui-login-password-text-field'); fireEvent.changeText(getByTestId('blui-login-password-text-field'), 'testpassword'); fireEvent(passwordInput, 'submitEditing'); expect(mockSubmitEditing).toHaveBeenCalled(); }); });