import React from 'react';
import { render } from '@testing-library/react-native';
import { SignUp } from '..';
import { authenticatorTextUtil } from '@aws-amplify/ui';
const USERNAME = 'username';
const username = {
name: USERNAME,
label: 'Username',
placeholder: 'Username',
type: 'default' as const,
};
const password = {
name: 'password',
label: 'Password',
placeholder: 'Password',
type: 'password' as const,
};
const confirmPassword = {
name: 'confirmPassword',
label: 'Confirm Password',
placeholder: 'Confirm Password',
type: 'password' as const,
};
const phone = {
name: 'phone',
label: 'Phone',
placeholder: 'Phone',
type: 'phone' as const,
};
const fields = [username, password, confirmPassword, phone];
const props = {
fields,
FormFields: SignUp.FormFields,
Footer: SignUp.Footer,
handleBlur: jest.fn(),
handleChange: jest.fn(),
handleSubmit: jest.fn(),
hasValidationErrors: false,
Header: SignUp.Header,
isPending: false,
socialProviders: [],
toResetPassword: jest.fn(),
toFederatedSignIn: jest.fn(),
toSignIn: jest.fn(),
validationErrors: undefined,
};
const { getCreatingAccountText } = authenticatorTextUtil;
describe('SignUp', () => {
it('renders as expected', () => {
const { toJSON, getAllByRole, queryByText } = render();
expect(toJSON()).toMatchSnapshot();
expect(queryByText(getCreatingAccountText())).toBe(null);
expect(getAllByRole('text')).toHaveLength(fields.length);
});
it('renders as expected with errors', () => {
const error = 'Something went wrong';
const { toJSON, getByRole, queryByText } = render(
);
expect(toJSON()).toMatchSnapshot();
expect(getByRole('alert')).toBeDefined();
expect(queryByText(error)).toBeDefined();
});
it('renders as expected when hideSignIn is true', () => {
const { toJSON, queryByRole } = render();
expect(toJSON()).toMatchSnapshot();
expect(queryByRole('tab')).toBe(null);
});
it('renders as expected when isPending is true', () => {
const { toJSON, queryByText } = render();
expect(toJSON()).toMatchSnapshot();
expect(queryByText(getCreatingAccountText())).toBeDefined();
});
it('renders as expected with validationErrors', () => {
const { toJSON, getByText } = render(
);
expect(toJSON()).toMatchSnapshot();
expect(getByText('error')).toBeDefined();
expect(getByText('another error')).toBeDefined();
});
});