@brightlayer-ui/react-native-auth-workflow
Version:
Re-usable workflow components for Authentication and Registration within Eaton applications.
85 lines (84 loc) • 3.77 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import React from 'react';
import { fireEvent, render, screen, waitFor } from '@testing-library/react-native';
import { RegistrationWorkflow } from 'src/components';
import { RegistrationContextProvider } from 'src/contexts';
import { VerifyCodeScreen } from 'src/screens';
import { registrationContextProviderProps } from 'src/testUtils';
import { PaperProvider } from 'react-native-paper';
describe('Verify Code Full Screen Test cases', () => {
let mockOnPrevious;
let mockOnResend;
let mockOnClose;
beforeEach(() => {
mockOnPrevious = jest.fn();
mockOnResend = jest.fn();
mockOnClose = jest.fn();
});
afterEach(() => {
jest.clearAllMocks();
});
const renderer = (props) => render(React.createElement(PaperProvider, null,
React.createElement(RegistrationContextProvider, Object.assign({}, registrationContextProviderProps),
React.createElement(RegistrationWorkflow, { initialScreenIndex: 0 },
React.createElement(VerifyCodeScreen, Object.assign({}, props))))));
it('Should render correctly', () => {
renderer();
expect(screen.getByText('Verify Email')).toBeOnTheScreen();
});
it('clicking on close Icon test with mock function', () => {
renderer({
WorkflowCardHeaderProps: {
onIconPress: mockOnClose(),
},
});
const closeIcon = screen.getByTestId('blui-workflow-card-header-icon');
fireEvent.press(closeIcon);
expect(mockOnClose).toHaveBeenCalled();
});
it('clicking on close Icon test', () => {
renderer();
const closeIcon = screen.getByTestId('blui-workflow-card-header-icon');
fireEvent.press(closeIcon);
expect(render).toBeTruthy();
});
it('requestResendCode function test', () => {
renderer({
resendLabel: 'Send Again',
onResend: mockOnResend(),
});
const resendLink = screen.getByText('Send Again');
fireEvent.press(resendLink);
expect(mockOnResend).toHaveBeenCalled();
});
it('onPrevious function call test', () => {
renderer({
WorkflowCardActionsProps: {
canGoPrevious: true,
showPrevious: true,
previousLabel: 'Back',
onPrevious: mockOnPrevious(),
},
});
const prevButton = screen.getByTestId('blui-workflow-card-actions-previous-button');
fireEvent.press(prevButton);
expect(mockOnPrevious).toHaveBeenCalled();
});
it('should display loader, when next button is pressed', () => __awaiter(void 0, void 0, void 0, function* () {
renderer();
const codeInput = screen.getByTestId('blui-verify-code-text-input');
fireEvent.changeText(codeInput, '123');
const nextButton = screen.getByText('Next');
expect(nextButton).toBeOnTheScreen();
fireEvent.press(nextButton);
yield waitFor(() => expect(screen.getByTestId('blui-spinner')).toBeOnTheScreen());
}));
});