Merge pull request #4627 from TrejGun/gas-fee-display
refactor gas-fee-display componentfeature/default_network_editable
commit
60feeb393b
@ -1,53 +0,0 @@ |
||||
const Component = require('react').Component |
||||
const PropTypes = require('prop-types') |
||||
const h = require('react-hyperscript') |
||||
const inherits = require('util').inherits |
||||
const CurrencyDisplay = require('./currency-display') |
||||
const connect = require('react-redux').connect |
||||
|
||||
GasFeeDisplay.contextTypes = { |
||||
t: PropTypes.func, |
||||
} |
||||
|
||||
module.exports = connect()(GasFeeDisplay) |
||||
|
||||
|
||||
inherits(GasFeeDisplay, Component) |
||||
function GasFeeDisplay () { |
||||
Component.call(this) |
||||
} |
||||
|
||||
GasFeeDisplay.prototype.render = function () { |
||||
const { |
||||
conversionRate, |
||||
gasTotal, |
||||
onClick, |
||||
primaryCurrency = 'ETH', |
||||
convertedCurrency, |
||||
gasLoadingError, |
||||
} = this.props |
||||
|
||||
return h('div.send-v2__gas-fee-display', [ |
||||
|
||||
gasTotal |
||||
? h(CurrencyDisplay, { |
||||
primaryCurrency, |
||||
convertedCurrency, |
||||
value: gasTotal, |
||||
conversionRate, |
||||
convertedPrefix: '$', |
||||
readOnly: true, |
||||
}) |
||||
: gasLoadingError |
||||
? h('div.currency-display.currency-display--message', this.context.t('setGasPrice')) |
||||
: h('div.currency-display', this.context.t('loading')), |
||||
|
||||
h('button.sliders-icon-container', { |
||||
onClick, |
||||
disabled: !gasTotal && !gasLoadingError, |
||||
}, [ |
||||
h('i.fa.fa-sliders.sliders-icon'), |
||||
]), |
||||
|
||||
]) |
||||
} |
@ -0,0 +1,61 @@ |
||||
import React, {Component} from 'react' |
||||
import PropTypes from 'prop-types' |
||||
import CurrencyDisplay from '../../../../send/currency-display' |
||||
|
||||
|
||||
export default class GasFeeDisplay extends Component { |
||||
|
||||
static propTypes = { |
||||
conversionRate: PropTypes.number, |
||||
primaryCurrency: PropTypes.string, |
||||
convertedCurrency: PropTypes.string, |
||||
gasLoadingError: PropTypes.bool, |
||||
gasTotal: PropTypes.string, |
||||
onClick: PropTypes.func, |
||||
}; |
||||
|
||||
render() { |
||||
const { |
||||
conversionRate, |
||||
gasTotal, |
||||
onClick, |
||||
primaryCurrency = 'ETH', |
||||
convertedCurrency, |
||||
gasLoadingError, |
||||
} = this.props |
||||
|
||||
return ( |
||||
<div className="send-v2__gas-fee-display"> |
||||
{gasTotal |
||||
? <CurrencyDisplay |
||||
primaryCurrency={primaryCurrency} |
||||
convertedCurrency={convertedCurrency} |
||||
value={gasTotal} |
||||
conversionRate={conversionRate} |
||||
gasLoadingError={gasLoadingError} |
||||
convertedPrefix={'$'} |
||||
readOnly |
||||
/> |
||||
: gasLoadingError |
||||
? <div className="currency-display.currency-display--message"> |
||||
{this.context.t('setGasPrice')} |
||||
</div> |
||||
: <div className="currency-display"> |
||||
{this.context.t('loading')} |
||||
</div> |
||||
} |
||||
<button |
||||
className="sliders-icon-container" |
||||
onClick={onClick} |
||||
disabled={!gasTotal && !gasLoadingError} |
||||
> |
||||
<i className="fa fa-sliders sliders-icon" /> |
||||
</button> |
||||
</div> |
||||
) |
||||
} |
||||
} |
||||
|
||||
GasFeeDisplay.contextTypes = { |
||||
t: PropTypes.func, |
||||
} |
@ -0,0 +1 @@ |
||||
export { default } from './gas-fee-display.component' |
@ -0,0 +1,55 @@ |
||||
import React from 'react' |
||||
import assert from 'assert' |
||||
import {shallow} from 'enzyme' |
||||
import GasFeeDisplay from '../gas-fee-display.component' |
||||
import CurrencyDisplay from '../../../../../send/currency-display' |
||||
import sinon from 'sinon' |
||||
|
||||
|
||||
const propsMethodSpies = { |
||||
showCustomizeGasModal: sinon.spy(), |
||||
} |
||||
|
||||
describe.only('SendGasRow Component', function() { |
||||
let wrapper |
||||
|
||||
beforeEach(() => { |
||||
wrapper = shallow(<GasFeeDisplay |
||||
conversionRate={20} |
||||
gasTotal={'mockGasTotal'} |
||||
onClick={propsMethodSpies.showCustomizeGasModal} |
||||
primaryCurrency={'mockPrimaryCurrency'} |
||||
convertedCurrency={'mockConvertedCurrency'} |
||||
/>, {context: {t: str => str + '_t'}}) |
||||
}) |
||||
|
||||
afterEach(() => { |
||||
propsMethodSpies.showCustomizeGasModal.resetHistory() |
||||
}) |
||||
|
||||
describe('render', () => { |
||||
it('should render a CurrencyDisplay component', () => { |
||||
assert.equal(wrapper.find(CurrencyDisplay).length, 1) |
||||
}) |
||||
|
||||
it('should render the CurrencyDisplay with the correct props', () => { |
||||
const { |
||||
conversionRate, |
||||
convertedCurrency, |
||||
value, |
||||
} = wrapper.find(CurrencyDisplay).props() |
||||
assert.equal(conversionRate, 20) |
||||
assert.equal(convertedCurrency, 'mockConvertedCurrency') |
||||
assert.equal(value, 'mockGasTotal') |
||||
}) |
||||
|
||||
it('should render the Button with the correct props', () => { |
||||
const { |
||||
onClick, |
||||
} = wrapper.find('button').props() |
||||
assert.equal(propsMethodSpies.showCustomizeGasModal.callCount, 0) |
||||
onClick() |
||||
assert.equal(propsMethodSpies.showCustomizeGasModal.callCount, 1) |
||||
}) |
||||
}) |
||||
}) |
Loading…
Reference in new issue