import { fireEvent } from '@testing-library/react'; import React from 'react'; import configureMockStore from 'redux-mock-store'; import initializedMockState from '../../../../test/data/mock-state.json'; import { ONBOARDING_CREATE_PASSWORD_ROUTE } from '../../../helpers/constants/routes'; import { renderWithProvider } from '../../../../test/lib/render-helpers'; import ImportSrp from './import-srp'; const mockHistoryReplace = jest.fn(); jest.mock('react-router-dom', () => ({ ...jest.requireActual('react-router-dom'), useHistory: () => ({ replace: mockHistoryReplace, }), })); const TEST_SEED = 'debris dizzy just program just float decrease vacant alarm reduce speak stadium'; describe('Import SRP', () => { const mockState = { metamask: { identities: {}, selectedAddress: '', }, }; afterEach(() => { jest.clearAllMocks(); }); it('should route to create password route when keyring is already initialized', () => { const mockStore = configureMockStore()(initializedMockState); renderWithProvider(, mockStore); expect(mockHistoryReplace).toHaveBeenCalledWith( ONBOARDING_CREATE_PASSWORD_ROUTE, ); }); it('should render import srp and disable confirm srp button', () => { const mockStore = configureMockStore()(mockState); const { queryByTestId } = renderWithProvider(, mockStore); const importSrpTestId = queryByTestId('import-srp'); expect(importSrpTestId).toBeInTheDocument(); const confirmSrpButton = queryByTestId('import-srp-confirm'); expect(confirmSrpButton).toBeDisabled(); }); it('should input and submit srp', () => { const mockStore = configureMockStore()(mockState); const mockSubmitSecretRecoveryPhrase = jest.fn(); const { queryByTestId } = renderWithProvider( , mockStore, ); inputSRP(TEST_SEED, queryByTestId); const confirmSrpButton = queryByTestId('import-srp-confirm'); expect(confirmSrpButton).not.toBeDisabled(); fireEvent.click(confirmSrpButton); expect(mockSubmitSecretRecoveryPhrase).toHaveBeenCalledWith(TEST_SEED); expect(mockHistoryReplace).toHaveBeenCalledWith( ONBOARDING_CREATE_PASSWORD_ROUTE, ); }); function inputSRP(seedStr, queryByTestId) { for (const [index, word] of seedStr.split(' ').entries()) { const srpInput = queryByTestId(`import-srp__srp-word-${index}`); fireEvent.change(srpInput, { target: { value: word } }); } } });