From a2bbf504b891a63f32070961118ec1ae6fa5fdd8 Mon Sep 17 00:00:00 2001 From: Dan Miller Date: Tue, 9 Oct 2018 14:05:54 -0230 Subject: Read only connection of gas price chart to redux --- .../advanced-tab-content.component.js | 4 +- .../gas-modal-page-container.component.js | 2 + .../gas-modal-page-container.container.js | 4 +- .../gas-modal-page-container-container.test.js | 4 ++ .../tests/gas-price-chart.component.test.js | 45 ++++++++++++++++++++-- 5 files changed, 54 insertions(+), 5 deletions(-) (limited to 'ui/app/components/gas-customization') diff --git a/ui/app/components/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content.component.js b/ui/app/components/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content.component.js index f90da0a88..44aba358c 100644 --- a/ui/app/components/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content.component.js +++ b/ui/app/components/gas-customization/gas-modal-page-container/advanced-tab-content/advanced-tab-content.component.js @@ -15,6 +15,7 @@ export default class AdvancedTabContent extends Component { millisecondsRemaining: PropTypes.number, totalFee: PropTypes.string, timeRemaining: PropTypes.string, + gasChartProps: PropTypes.object, } gasInput (value, onChange, min, precision, showGWEI) { @@ -82,6 +83,7 @@ export default class AdvancedTabContent extends Component { customGasPrice, customGasLimit, totalFee, + gasChartProps, } = this.props return ( @@ -95,7 +97,7 @@ export default class AdvancedTabContent extends Component { updateCustomGasLimit ) }
Live Gas Price Predictions
- +
Slower Faster diff --git a/ui/app/components/gas-customization/gas-modal-page-container/gas-modal-page-container.component.js b/ui/app/components/gas-customization/gas-modal-page-container/gas-modal-page-container.component.js index ac5981ab7..de14e1b38 100644 --- a/ui/app/components/gas-customization/gas-modal-page-container/gas-modal-page-container.component.js +++ b/ui/app/components/gas-customization/gas-modal-page-container/gas-modal-page-container.component.js @@ -46,6 +46,7 @@ export default class GasModalPageContainer extends Component { customGasPrice, customGasLimit, newTotalFiat, + gasChartProps, }) { const { transactionFee } = this.props return ( @@ -57,6 +58,7 @@ export default class GasModalPageContainer extends Component { timeRemaining="1 min 31 sec" transactionFee={transactionFee} totalFee={newTotalFiat} + gasChartProps={gasChartProps} /> ) } diff --git a/ui/app/components/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js b/ui/app/components/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js index 9d6dd3fb5..84eae1880 100644 --- a/ui/app/components/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js +++ b/ui/app/components/gas-customization/gas-modal-page-container/gas-modal-page-container.container.js @@ -73,12 +73,14 @@ const mapStateToProps = state => { customGasPrice: calcCustomGasPrice(customModalGasPriceInHex), customGasLimit: calcCustomGasLimit(customModalGasLimitInHex), newTotalFiat, - transactionFee: addHexWEIsToRenderableFiat('0x0', customGasTotal, currentCurrency, conversionRate), gasPriceButtonGroupProps: { buttonDataLoading, defaultActiveButtonIndex: getDefaultActiveButtonIndex(gasButtonInfo, customModalGasPriceInHex), gasButtonInfo, }, + gasChartProps: { + priceAndTimeEstimates: state.gas.priceAndTimeEstimates, + }, infoRowProps: { originalTotalFiat: addHexWEIsToRenderableFiat(value, gasTotal, currentCurrency, conversionRate), originalTotalEth: addHexWEIsToRenderableEth(value, gasTotal), diff --git a/ui/app/components/gas-customization/gas-modal-page-container/tests/gas-modal-page-container-container.test.js b/ui/app/components/gas-customization/gas-modal-page-container/tests/gas-modal-page-container-container.test.js index 3d9fb2624..c16a07b76 100644 --- a/ui/app/components/gas-customization/gas-modal-page-container/tests/gas-modal-page-container-container.test.js +++ b/ui/app/components/gas-customization/gas-modal-page-container/tests/gas-modal-page-container-container.test.js @@ -75,6 +75,7 @@ describe('gas-modal-page-container container', () => { limit: 'aaaaaaaa', price: 'ffffffff', }, + priceAndTimeEstimates: 'mockPriceAndTimeEstimates', }, confirmTransaction: { txData: { @@ -95,6 +96,9 @@ describe('gas-modal-page-container container', () => { newTotalFiat: '637.41', customModalGasLimitInHex: 'aaaaaaaa', customModalGasPriceInHex: 'ffffffff', + gasChartProps: { + priceAndTimeEstimates: 'mockPriceAndTimeEstimates', + }, gasPriceButtonGroupProps: { buttonDataLoading: 'mockBasicGasEstimateLoadingStatus:4', defaultActiveButtonIndex: 'mockRenderableBasicEstimateData:4ffffffff', diff --git a/ui/app/components/gas-customization/gas-price-chart/tests/gas-price-chart.component.test.js b/ui/app/components/gas-customization/gas-price-chart/tests/gas-price-chart.component.test.js index 1a0f6760e..ae98659cc 100644 --- a/ui/app/components/gas-customization/gas-price-chart/tests/gas-price-chart.component.test.js +++ b/ui/app/components/gas-customization/gas-price-chart/tests/gas-price-chart.component.test.js @@ -1,18 +1,57 @@ import React from 'react' import assert from 'assert' +import proxyquire from 'proxyquire' +import sinon from 'sinon' import shallow from '../../../../../lib/shallow-with-context' -import GasPriceChart from '../gas-price-chart.component.js' +import * as d3 from 'd3' + +const mockSelectReturn = { + ...d3.select('div'), + node: () => ({ + getBoundingClientRect: () => ({ x: 123, y: 321, width: 400 }), + }), + select: d3.select, + attr: sinon.spy(), + on: sinon.spy(), +} + +const GasPriceChart = proxyquire('../gas-price-chart.component.js', { + 'c3': { + generate: function () { + return { + internal: { + showTooltip: () => {}, + showXGridFocus: () => {}, + }, + } + }, + }, + 'd3': { + ...d3, + select: function (...args) { + const result = d3.select(...args) + return result.empty() + ? mockSelectReturn + : result + }, + }, +}).default describe('GasPriceChart Component', function () { let wrapper beforeEach(() => { - wrapper = shallow() + wrapper = shallow() }) describe('render()', () => { it('should render', () => { - console.log('wrapper', wrapper.html()) assert(wrapper.hasClass('gas-price-chart')) }) -- cgit