import assert from 'assert' import React from 'react' import { shallow } from 'enzyme' import sinon from 'sinon' import SendGasRow from '../send-gas-row.component' import SendRowWrapper from '../../send-row-wrapper/send-row-wrapper.component' import GasFeeDisplay from '../gas-fee-display/gas-fee-display.component' import GasPriceButtonGroup from '../../../../../components/app/gas-customization/gas-price-button-group' const propsMethodSpies = { showCustomizeGasModal: sinon.spy(), resetGasButtons: sinon.spy(), } describe('SendGasRow Component', function () { let wrapper describe('render', function () { beforeEach(function () { wrapper = shallow( , { context: { t: (str) => `${str}_t`, metricsEvent: () => ({}) } }, ) wrapper.setProps({ isMainnet: true }) }) afterEach(function () { propsMethodSpies.resetGasButtons.resetHistory() }) it('should render a SendRowWrapper component', function () { assert.strictEqual(wrapper.name(), 'Fragment') assert.strictEqual(wrapper.at(0).find(SendRowWrapper).length, 1) }) it('should pass the correct props to SendRowWrapper', function () { const { label, showError, errorType } = wrapper .find(SendRowWrapper) .first() .props() assert.strictEqual(label, 'transactionFee_t:') assert.strictEqual(showError, true) assert.strictEqual(errorType, 'gasFee') }) it('should render a GasFeeDisplay as a child of the SendRowWrapper', function () { assert(wrapper.find(SendRowWrapper).first().childAt(0).is(GasFeeDisplay)) }) it('should render the GasFeeDisplay', function () { const { gasLoadingError, gasTotal, onReset } = wrapper .find(SendRowWrapper) .first() .childAt(0) .props() assert.strictEqual(gasLoadingError, false) assert.strictEqual(gasTotal, 'mockGasTotal') assert.strictEqual(propsMethodSpies.resetGasButtons.callCount, 0) onReset() assert.strictEqual(propsMethodSpies.resetGasButtons.callCount, 1) }) it('should render the GasPriceButtonGroup if gasButtonGroupShown is true', function () { wrapper.setProps({ gasButtonGroupShown: true }) const rendered = wrapper.find(SendRowWrapper).first().childAt(0) assert.strictEqual(wrapper.children().length, 2) const gasPriceButtonGroup = rendered.childAt(0) assert(gasPriceButtonGroup.is(GasPriceButtonGroup)) assert(gasPriceButtonGroup.hasClass('gas-price-button-group--small')) assert.strictEqual(gasPriceButtonGroup.props().showCheck, false) assert.strictEqual( gasPriceButtonGroup.props().someGasPriceButtonGroupProp, 'foo', ) assert.strictEqual( gasPriceButtonGroup.props().anotherGasPriceButtonGroupProp, 'bar', ) }) it('should render an advanced options button if gasButtonGroupShown is true', function () { wrapper.setProps({ gasButtonGroupShown: true }) const rendered = wrapper.find(SendRowWrapper).last() assert.strictEqual(wrapper.children().length, 2) const advancedOptionsButton = rendered.childAt(0) assert.strictEqual(advancedOptionsButton.text(), 'advancedOptions_t') assert.strictEqual(propsMethodSpies.showCustomizeGasModal.callCount, 0) advancedOptionsButton.props().onClick() assert.strictEqual(propsMethodSpies.showCustomizeGasModal.callCount, 1) }) }) })