import React from 'react';
import { fireEvent } from '@testing-library/react';
import configureMockStore from 'redux-mock-store';
import reactRouterDom from 'react-router-dom';
import { renderWithProvider } from '../../../../test/lib/render-helpers';
import { ONBOARDING_COMPLETION_ROUTE } from '../../../helpers/constants/routes';
import SecureYourWallet from './secure-your-wallet';
describe('Secure Your Wallet Onboarding View', () => {
const useHistoryOriginal = reactRouterDom.useHistory;
const pushMock = jest.fn();
beforeAll(() => {
jest
.spyOn(reactRouterDom, 'useHistory')
.mockImplementation()
.mockReturnValue({ push: pushMock });
});
afterAll(() => {
reactRouterDom.useHistory = useHistoryOriginal;
});
const mockStore = {
metamask: {
provider: {
type: 'test',
},
},
};
const store = configureMockStore()(mockStore);
it('should show a popover asking the user if they want to skip account security if they click "Remind me later"', () => {
const { queryAllByText, getByText } = renderWithProvider(
,
store,
);
const remindMeLaterButton = getByText('Remind me later (not recommended)');
expect(queryAllByText('Skip account security?')).toHaveLength(0);
fireEvent.click(remindMeLaterButton);
expect(queryAllByText('Skip account security?')).toHaveLength(1);
});
it('should not be able to click "skip" until "Skip Account Security" terms are agreed to', () => {
const { getByText, getByTestId } = renderWithProvider(
,
store,
);
const remindMeLaterButton = getByText('Remind me later (not recommended)');
fireEvent.click(remindMeLaterButton);
const skipButton = getByText('Skip');
fireEvent.click(skipButton);
expect(pushMock).toHaveBeenCalledTimes(0);
const checkbox = getByTestId('skip-srp-backup-popover-checkbox');
fireEvent.click(checkbox);
fireEvent.click(skipButton);
expect(pushMock).toHaveBeenCalledTimes(1);
expect(pushMock).toHaveBeenCalledWith(ONBOARDING_COMPLETION_ROUTE);
});
});