import React from 'react';
import configureMockStore from 'redux-mock-store';
import { fireEvent, waitFor } from '@testing-library/react';
import thunk from 'redux-thunk';
import { renderWithProvider } from '../../../../../test/lib/render-helpers';
import mockState from '../../../../../test/data/mock-state.json';
import {
yesLetsTry,
nevermind,
} from '../../../../../app/_locales/en/messages.json';
import CancelTransaction from '.';
const mockCreateCancelTransaction = jest.fn();
const mockShowModal = jest.fn();
const mockHideModal = jest.fn();
jest.mock('../../../../store/actions.js', () => {
return {
createCancelTransaction: () => mockCreateCancelTransaction,
showModal: () => mockShowModal,
hideModal: () => mockHideModal,
};
});
describe('CancelTransaction Component', () => {
afterEach(() => {
mockCreateCancelTransaction.mockClear();
mockShowModal.mockClear();
mockHideModal.mockClear();
});
const props = {
newGasFee: '0x1319718a5000', // 21000000000000
};
it('should match snapshot', () => {
const mockStore = configureMockStore()(mockState);
const { container } = renderWithProvider(
,
mockStore,
);
expect(container).toMatchSnapshot();
});
it('should call create cancel transaction and hide modal', async () => {
const mockStore = configureMockStore([thunk])(mockState);
const { queryByText } = renderWithProvider(
,
mockStore,
);
fireEvent.click(queryByText(yesLetsTry.message));
await waitFor(() => {
expect(mockCreateCancelTransaction).toHaveBeenCalled();
expect(mockHideModal).toHaveBeenCalled();
});
});
it('should hide modal when clicking "Nevermind" button', () => {
const mockStore = configureMockStore([thunk])(mockState);
const { queryByText } = renderWithProvider(
,
mockStore,
);
fireEvent.click(queryByText(nevermind.message));
expect(mockCreateCancelTransaction).not.toHaveBeenCalled();
expect(mockHideModal).toHaveBeenCalled();
});
it('should hide modal when closing from header', () => {
const mockStore = configureMockStore([thunk])(mockState);
const { queryByTestId } = renderWithProvider(
,
mockStore,
);
fireEvent.click(queryByTestId('modal-header-close'));
expect(mockCreateCancelTransaction).not.toHaveBeenCalled();
expect(mockHideModal).toHaveBeenCalled();
});
});