import React from 'react'; import configureMockStore from 'redux-mock-store'; import { waitFor } from '@testing-library/react'; import { renderWithProvider } from '../../../../test/lib/render-helpers'; import { GAS_ESTIMATE_TYPES } from '../../../../shared/constants/gas'; import mockState from '../../../../test/data/mock-state.json'; import GasTiming from '.'; jest.mock('../../../store/actions.js', () => ({ getGasFeeTimeEstimate: jest.fn().mockImplementation(() => Promise.resolve()), })); describe('Gas timing', () => { it('renders nothing when gas is loading', () => { // Fails the networkAndAccountSupports1559 check const nullGasState = { metamask: { gasFeeEstimates: null, gasEstimateType: GAS_ESTIMATE_TYPES.FEE_MARKET, }, }; const mockStore = configureMockStore()(nullGasState); const { container } = renderWithProvider(, mockStore); expect(container).toMatchSnapshot(); }); it('renders "very likely" when high estimate is chosen', async () => { const mockStore = configureMockStore()(mockState); const props = { maxPriorityFeePerGas: '10', }; const { queryByText } = renderWithProvider( , mockStore, ); await waitFor(() => { expect(queryByText(/Very likely in/u)).toBeInTheDocument(); }); }); it('renders "likely" when medium estimate is chosen', async () => { const mockStore = configureMockStore()(mockState); const props = { maxPriorityFeePerGas: '8', }; const { queryByText } = renderWithProvider( , mockStore, ); await waitFor(() => { expect(queryByText(/Likely in/u)).toBeInTheDocument(); }); }); it('renders "maybe" when low estimate is chosen', async () => { const mockStore = configureMockStore()(mockState); const props = { maxPriorityFeePerGas: '3', }; const { queryByText } = renderWithProvider( , mockStore, ); await waitFor(() => { expect(queryByText(/Maybe in/u)).toBeInTheDocument(); }); }); });