diff --git a/ui/pages/onboarding-flow/import-srp/import-srp.test.js b/ui/pages/onboarding-flow/import-srp/import-srp.test.js new file mode 100644 index 000000000000..ef88f715eab3 --- /dev/null +++ b/ui/pages/onboarding-flow/import-srp/import-srp.test.js @@ -0,0 +1,83 @@ +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 } }); + } + } +});