aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md1
-rw-r--r--package.json1
-rw-r--r--test/unit/components/pending-tx-test.js27
-rw-r--r--test/unit/tx-controller-test.js87
-rw-r--r--ui/app/conf-tx.js2
5 files changed, 97 insertions, 21 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b49d8f3cd..4d990e7ea 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,7 @@
## Current Master
+- Fix bug where edited gas parameters would not take effect.
- Trim currency list.
- Enable decimals in our gas prices.
- Fix reset button.
diff --git a/package.json b/package.json
index eb5ed8a32..14ddd2886 100644
--- a/package.json
+++ b/package.json
@@ -136,7 +136,6 @@
"browserify": "^13.0.0",
"chai": "^3.5.0",
"clone": "^1.0.2",
- "create-react-factory": "^0.2.1",
"deep-freeze-strict": "^1.1.1",
"del": "^2.2.0",
"envify": "^4.0.0",
diff --git a/test/unit/components/pending-tx-test.js b/test/unit/components/pending-tx-test.js
index 166b471cb..52e5e5910 100644
--- a/test/unit/components/pending-tx-test.js
+++ b/test/unit/components/pending-tx-test.js
@@ -2,16 +2,10 @@ const assert = require('assert')
const additions = require('react-testutils-additions')
const h = require('react-hyperscript')
const PendingTx = require('../../../ui/app/components/pending-tx')
-const createReactFactory = require('create-react-factory').createReactFactory
-const React = require('react')
-const shallow = require('react-test-renderer/shallow')
-const Factory = createReactFactory(PendingTx)
const ReactTestUtils = require('react-addons-test-utils')
const ethUtil = require('ethereumjs-util')
describe('PendingTx', function () {
- let pendingTxComponent
-
const identities = {
'0xfdea65c8e26263f6d9a1b5de9555d2931a33b826': {
name: 'Main Account 1',
@@ -38,7 +32,7 @@ describe('PendingTx', function () {
it('should use updated values when edited.', function (done) {
- const renderer = ReactTestUtils.createRenderer();
+ const renderer = ReactTestUtils.createRenderer()
const newGasPrice = '0x77359400'
const props = {
@@ -56,34 +50,31 @@ describe('PendingTx', function () {
}
const pendingTxComponent = h(PendingTx, props)
- const component = additions.renderIntoDocument(pendingTxComponent);
+ const component = additions.renderIntoDocument(pendingTxComponent)
renderer.render(pendingTxComponent)
const result = renderer.getRenderOutput()
- const form = result.props.children
- const children = form.props.children[form.props.children.length - 1]
assert.equal(result.type, 'div', 'should create a div')
- try{
-
+ try {
const input = additions.find(component, '.cell.row input[type="number"]')[1]
ReactTestUtils.Simulate.change(input, {
target: {
value: 2,
checkValidity() { return true },
- }
+ },
})
- let form = additions.find(component, 'form')[0]
+ const form = additions.find(component, 'form')[0]
form.checkValidity = () => true
form.getFormEl = () => { return { checkValidity() { return true } } }
- ReactTestUtils.Simulate.submit(form, { preventDefault() {}, target: { checkValidity() {return true} } })
+ ReactTestUtils.Simulate.submit(form, { preventDefault() {}, target: { checkValidity() {
+ return true
+ } } })
} catch (e) {
- console.log("WHAAAA")
+ console.log('WHAAAA')
console.error(e)
}
-
})
-
})
diff --git a/test/unit/tx-controller-test.js b/test/unit/tx-controller-test.js
index d0b32ff41..d4e8d79f0 100644
--- a/test/unit/tx-controller-test.js
+++ b/test/unit/tx-controller-test.js
@@ -3,13 +3,15 @@ const EventEmitter = require('events')
const ethUtil = require('ethereumjs-util')
const EthTx = require('ethereumjs-tx')
const ObservableStore = require('obs-store')
+const clone = require('clone')
+const sinon = require('sinon')
const TransactionController = require('../../app/scripts/controllers/transactions')
const noop = () => true
const currentNetworkId = 42
const otherNetworkId = 36
const privKey = new Buffer('8718b9618a37d1fc78c436511fc6df3c8258d3250635bba617f33003270ec03e', 'hex')
-describe('Transaction Manager', function () {
+describe('Transaction Controller', function () {
let txController
beforeEach(function () {
@@ -170,6 +172,28 @@ describe('Transaction Manager', function () {
var result = txController.getTx('1')
assert.equal(result.hash, 'foo')
})
+
+ it('updates gas price', function () {
+ const originalGasPrice = '0x01'
+ const desiredGasPrice = '0x02'
+
+ const txMeta = {
+ id: '1',
+ status: 'unapproved',
+ metamaskNetworkId: currentNetworkId,
+ txParams: {
+ gasPrice: originalGasPrice,
+ },
+ }
+
+ const updatedMeta = clone(txMeta)
+
+ txController.addTx(txMeta)
+ updatedMeta.txParams.gasPrice = desiredGasPrice
+ txController.updateTx(updatedMeta)
+ var result = txController.getTx('1')
+ assert.equal(result.txParams.gasPrice, desiredGasPrice, 'gas price updated')
+ })
})
describe('#getUnapprovedTxList', function () {
@@ -224,6 +248,66 @@ describe('Transaction Manager', function () {
})
})
+ describe('#approveTransaction', function () {
+ let txMeta, originalValue
+
+ beforeEach(function () {
+ originalValue = '0x01'
+ txMeta = {
+ id: '1',
+ status: 'unapproved',
+ metamaskNetworkId: currentNetworkId,
+ txParams: {
+ nonce: originalValue,
+ gas: originalValue,
+ gasPrice: originalValue,
+ },
+ }
+ })
+
+
+ it('does not overwrite set values', function (done) {
+ const wrongValue = '0x05'
+
+ txController.addTx(txMeta)
+
+ const estimateStub = sinon.stub(txController.txProviderUtils.query, 'estimateGas')
+ .callsArgWith(1, null, wrongValue)
+
+ const priceStub = sinon.stub(txController.txProviderUtils.query, 'gasPrice')
+ .callsArgWith(0, null, wrongValue)
+
+ const nonceStub = sinon.stub(txController.txProviderUtils.query, 'getTransactionCount')
+ .callsArgWith(2, null, wrongValue)
+
+ const signStub = sinon.stub(txController, 'signTransaction')
+ .callsArgWith(1, null, noop)
+
+ const pubStub = sinon.stub(txController.txProviderUtils, 'publishTransaction')
+ .callsArgWith(1, null, originalValue)
+
+ txController.approveTransaction(txMeta.id, (err) => {
+ assert.ifError(err, 'should not error')
+
+ const result = txController.getTx(txMeta.id)
+ const params = result.txParams
+
+ assert.equal(params.gas, originalValue, 'gas unmodified')
+ assert.equal(params.gasPrice, originalValue, 'gas price unmodified')
+ assert.equal(params.nonce, originalValue, 'nonce unmodified')
+ assert.equal(result.hash, originalValue, 'hash was set')
+
+ estimateStub.restore()
+ priceStub.restore()
+ signStub.restore()
+ nonceStub.restore()
+ pubStub.restore()
+
+ done()
+ })
+ })
+ })
+
describe('#sign replay-protected tx', function () {
it('prepares a tx with the chainId set', function () {
txController.addTx({ id: '1', status: 'unapproved', metamaskNetworkId: currentNetworkId, txParams: {} }, noop)
@@ -234,4 +318,5 @@ describe('Transaction Manager', function () {
})
})
})
+
})
diff --git a/ui/app/conf-tx.js b/ui/app/conf-tx.js
index 0d7c4c1bb..008627ce6 100644
--- a/ui/app/conf-tx.js
+++ b/ui/app/conf-tx.js
@@ -108,7 +108,7 @@ ConfirmTxScreen.prototype.render = function () {
currentCurrency,
// Actions
buyEth: this.buyEth.bind(this, txParams.from || props.selectedAddress),
- sendTransaction: this.sendTransaction.bind(this, txData),
+ sendTransaction: this.sendTransaction.bind(this),
cancelTransaction: this.cancelTransaction.bind(this, txData),
signMessage: this.signMessage.bind(this, txData),
signPersonalMessage: this.signPersonalMessage.bind(this, txData),