Refactor tests for AdvancedGasInputs (#12445)
* Upgrade style from Enzyme to React Testing Library * Use real i18n provider instead of a fake one so that we can look for English text instead of just i18n strings, improving readabilityfeature/default_network_editable
parent
a41e3b1925
commit
ca3aa7b08d
@ -1,122 +0,0 @@ |
||||
import React from 'react'; |
||||
import sinon from 'sinon'; |
||||
import { mount } from 'enzyme'; |
||||
import AdvancedTabContent from './advanced-gas-inputs.container'; |
||||
|
||||
describe('Advanced Gas Inputs', () => { |
||||
let wrapper, clock; |
||||
|
||||
const props = { |
||||
updateCustomGasPrice: sinon.spy(), |
||||
updateCustomGasLimit: sinon.spy(), |
||||
showGasPriceInfoModal: sinon.spy(), |
||||
showGasLimitInfoModal: sinon.spy(), |
||||
customGasPrice: 0, |
||||
customGasLimit: 0, |
||||
insufficientBalance: false, |
||||
customPriceIsSafe: true, |
||||
isSpeedUp: false, |
||||
minimumGasLimit: 21000, |
||||
}; |
||||
|
||||
beforeEach(() => { |
||||
clock = sinon.useFakeTimers(); |
||||
|
||||
wrapper = mount(<AdvancedTabContent.WrappedComponent {...props} />, { |
||||
context: { |
||||
t: (str) => str, |
||||
}, |
||||
}); |
||||
}); |
||||
|
||||
afterEach(() => { |
||||
clock.restore(); |
||||
}); |
||||
|
||||
it('wont update gasPrice in props before debounce', () => { |
||||
const event = { target: { value: 1 } }; |
||||
|
||||
wrapper.find('input').at(0).simulate('change', event); |
||||
clock.tick(499); |
||||
|
||||
expect(props.updateCustomGasPrice.callCount).toStrictEqual(0); |
||||
}); |
||||
|
||||
it('simulates onChange on gas price after debounce', () => { |
||||
const event = { target: { value: 1 } }; |
||||
|
||||
wrapper.find('input').at(0).simulate('change', event); |
||||
clock.tick(500); |
||||
|
||||
expect(props.updateCustomGasPrice.calledOnce).toStrictEqual(true); |
||||
expect(props.updateCustomGasPrice.calledWith(1)).toStrictEqual(true); |
||||
}); |
||||
|
||||
it('wont update gasLimit in props before debounce', () => { |
||||
const event = { target: { value: 21000 } }; |
||||
|
||||
wrapper.find('input').at(1).simulate('change', event); |
||||
clock.tick(499); |
||||
|
||||
expect(props.updateCustomGasLimit.callCount).toStrictEqual(0); |
||||
}); |
||||
|
||||
it('simulates onChange on gas limit after debounce', () => { |
||||
const event = { target: { value: 21000 } }; |
||||
|
||||
wrapper.find('input').at(1).simulate('change', event); |
||||
clock.tick(500); |
||||
|
||||
expect(props.updateCustomGasLimit.calledOnce).toStrictEqual(true); |
||||
expect(props.updateCustomGasLimit.calledWith(21000)).toStrictEqual(true); |
||||
}); |
||||
|
||||
it('errors when insufficientBalance under gas price and gas limit', () => { |
||||
wrapper.setProps({ insufficientBalance: true }); |
||||
const renderError = wrapper.find( |
||||
'.advanced-gas-inputs__gas-edit-row__error-text', |
||||
); |
||||
expect(renderError).toHaveLength(2); |
||||
|
||||
expect(renderError.at(0).text()).toStrictEqual('insufficientBalance'); |
||||
expect(renderError.at(1).text()).toStrictEqual('insufficientBalance'); |
||||
}); |
||||
|
||||
it('errors zero gas price / speed up', () => { |
||||
wrapper.setProps({ isSpeedUp: true }); |
||||
|
||||
const renderError = wrapper.find( |
||||
'.advanced-gas-inputs__gas-edit-row__error-text', |
||||
); |
||||
expect(renderError).toHaveLength(2); |
||||
|
||||
expect(renderError.at(0).text()).toStrictEqual( |
||||
'zeroGasPriceOnSpeedUpError', |
||||
); |
||||
expect(renderError.at(1).text()).toStrictEqual( |
||||
'gasLimitTooLowWithDynamicFee', |
||||
); |
||||
}); |
||||
|
||||
it('warns when custom gas price is too low', () => { |
||||
wrapper.setProps({ customPriceIsSafe: false }); |
||||
|
||||
const renderWarning = wrapper.find( |
||||
'.advanced-gas-inputs__gas-edit-row__warning-text', |
||||
); |
||||
expect(renderWarning).toHaveLength(1); |
||||
|
||||
expect(renderWarning.text()).toStrictEqual('gasPriceExtremelyLow'); |
||||
}); |
||||
|
||||
it('errors when custom gas price is too excessive', () => { |
||||
wrapper.setProps({ customPriceIsExcessive: true }); |
||||
|
||||
const renderError = wrapper.find( |
||||
'.advanced-gas-inputs__gas-edit-row__error-text', |
||||
); |
||||
|
||||
expect(renderError).toHaveLength(2); |
||||
expect(renderError.at(0).text()).toStrictEqual('gasPriceExcessiveInput'); |
||||
}); |
||||
}); |
@ -0,0 +1,119 @@ |
||||
import React from 'react'; |
||||
import sinon from 'sinon'; |
||||
import { renderWithProvider, fireEvent } from '../../../../../test/jest'; |
||||
import configureStore from '../../../../store/store'; |
||||
import AdvancedGasInputs from '.'; |
||||
|
||||
describe('AdvancedGasInputs', () => { |
||||
let clock; |
||||
|
||||
const props = { |
||||
updateCustomGasPrice: jest.fn(), |
||||
updateCustomGasLimit: jest.fn(), |
||||
showGasPriceInfoModal: jest.fn(), |
||||
showGasLimitInfoModal: jest.fn(), |
||||
customGasPrice: 0, |
||||
customGasLimit: 0, |
||||
insufficientBalance: false, |
||||
customPriceIsSafe: true, |
||||
isSpeedUp: false, |
||||
minimumGasLimit: 21000, |
||||
}; |
||||
|
||||
const store = configureStore({}); |
||||
|
||||
beforeEach(() => { |
||||
clock = sinon.useFakeTimers(); |
||||
}); |
||||
|
||||
afterEach(() => { |
||||
clock.restore(); |
||||
}); |
||||
|
||||
it("won't update gasPrice in props before debounce", () => { |
||||
const { getByTestId } = renderWithProvider( |
||||
<AdvancedGasInputs {...props} />, |
||||
store, |
||||
); |
||||
|
||||
fireEvent.change(getByTestId('gas-price'), { target: { value: '10' } }); |
||||
clock.tick(499); |
||||
|
||||
expect(props.updateCustomGasPrice).toHaveBeenCalledTimes(0); |
||||
}); |
||||
|
||||
it('simulates onChange on gas price after debounce', () => { |
||||
const { getByTestId } = renderWithProvider( |
||||
<AdvancedGasInputs {...props} />, |
||||
store, |
||||
); |
||||
|
||||
fireEvent.change(getByTestId('gas-price'), { target: { value: '10' } }); |
||||
clock.tick(500); |
||||
|
||||
expect(props.updateCustomGasPrice).toHaveBeenCalledTimes(1); |
||||
expect(props.updateCustomGasPrice).toHaveBeenCalledWith('2540be400'); |
||||
}); |
||||
|
||||
it('wont update gasLimit in props before debounce', () => { |
||||
const { getByTestId } = renderWithProvider( |
||||
<AdvancedGasInputs {...props} />, |
||||
store, |
||||
); |
||||
|
||||
fireEvent.change(getByTestId('gas-limit'), { target: { value: '21000' } }); |
||||
clock.tick(499); |
||||
|
||||
expect(props.updateCustomGasLimit).toHaveBeenCalledTimes(0); |
||||
}); |
||||
|
||||
it('simulates onChange on gas limit after debounce', () => { |
||||
const { getByTestId } = renderWithProvider( |
||||
<AdvancedGasInputs {...props} />, |
||||
store, |
||||
); |
||||
|
||||
fireEvent.change(getByTestId('gas-limit'), { target: { value: '21000' } }); |
||||
clock.tick(500); |
||||
|
||||
expect(props.updateCustomGasLimit).toHaveBeenCalledTimes(1); |
||||
expect(props.updateCustomGasLimit).toHaveBeenCalledWith('5208'); |
||||
}); |
||||
|
||||
it('errors when insufficientBalance under gas price and gas limit', () => { |
||||
const { getAllByText } = renderWithProvider( |
||||
<AdvancedGasInputs {...props} insufficientBalance />, |
||||
store, |
||||
); |
||||
|
||||
expect(getAllByText('Insufficient balance.')).toHaveLength(2); |
||||
}); |
||||
|
||||
it('errors zero gas price / speed up', () => { |
||||
const { queryByText } = renderWithProvider( |
||||
<AdvancedGasInputs {...props} isSpeedUp />, |
||||
store, |
||||
); |
||||
|
||||
expect(queryByText('Zero gas price on speed up')).toBeInTheDocument(); |
||||
expect(queryByText('Gas limit must be at least 21000')).toBeInTheDocument(); |
||||
}); |
||||
|
||||
it('warns when custom gas price is too low', () => { |
||||
const { queryByText } = renderWithProvider( |
||||
<AdvancedGasInputs {...props} customPriceIsSafe={false} />, |
||||
store, |
||||
); |
||||
|
||||
expect(queryByText('Gas Price Extremely Low')).toBeInTheDocument(); |
||||
}); |
||||
|
||||
it('errors when custom gas price is too excessive', () => { |
||||
const { queryByText } = renderWithProvider( |
||||
<AdvancedGasInputs {...props} customPriceIsExcessive />, |
||||
store, |
||||
); |
||||
|
||||
expect(queryByText('Gas Price Is Excessive')).toBeInTheDocument(); |
||||
}); |
||||
}); |
Loading…
Reference in new issue