1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-29 15:50:28 +01:00
metamask-extension/ui/components/app/modals/export-private-key-modal/export-private-key-modal.test.js
Thomas Huang e65b955b19
Unit tests for various modals (#18115)
* Unit tests for Hide Token Confirmation modal

* Unit test for Export Private Key modal

* Unit test for Customize Nonce modal

* Bump coverage targets

---------

Co-authored-by: Brad Decker <bhdecker84@gmail.com>
2023-04-24 09:55:32 -07:00

82 lines
2.1 KiB
JavaScript

import React from 'react';
import { fireEvent } from '@testing-library/react';
import configureMockStore from 'redux-mock-store';
import thunk from 'redux-thunk';
import { renderWithProvider } from '../../../../../test/lib/render-helpers';
import mockState from '../../../../../test/data/mock-state.json';
import * as actions from '../../../../store/actions';
import ExportPrivateKeyModal from '.';
jest.mock('../../../../store/actions.ts', () => ({
...jest.requireActual('../../../../store/actions.ts'),
exportAccount: jest.fn().mockReturnValue(jest.fn().mockResolvedValueOnce()),
hideWarning: () => jest.fn(),
showModal: () => jest.fn(),
hideModal: () => jest.fn(),
clearAccountDetails: () => jest.fn(),
}));
describe('Export PrivateKey Modal', () => {
const password = 'a-password';
const privKeyModalState = {
...mockState,
appState: {
...mockState.appState,
accountDetail: {
privateKey: '0xPrivKey',
},
},
};
const mockStore = configureMockStore([thunk])(privKeyModalState);
afterEach(() => {
jest.clearAllMocks();
});
it('should match snapshot', () => {
const { container } = renderWithProvider(
<ExportPrivateKeyModal />,
mockStore,
);
expect(container).toMatchSnapshot();
});
it('should disable confirm button by default', () => {
const { queryByText } = renderWithProvider(
<ExportPrivateKeyModal />,
mockStore,
);
const confirmButton = queryByText('Confirm');
expect(confirmButton).toBeDisabled();
});
it('should call export account with password and selected address', () => {
const { queryByTestId, queryByText } = renderWithProvider(
<ExportPrivateKeyModal />,
mockStore,
);
const passwordInput = queryByTestId('password-input');
const passwordInputEvent = {
target: {
value: password,
},
};
fireEvent.change(passwordInput, passwordInputEvent);
const confirmButton = queryByText('Confirm');
fireEvent.click(confirmButton);
expect(actions.exportAccount).toHaveBeenCalledWith(
password,
mockState.metamask.selectedAddress,
);
});
});