mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Add failing test for issue #2294
This commit is contained in:
parent
53da368d23
commit
a32d71e8ed
@ -5,6 +5,8 @@ const ObservableStore = require('obs-store')
|
|||||||
const clone = require('clone')
|
const clone = require('clone')
|
||||||
const { createStubedProvider } = require('../stub/provider')
|
const { createStubedProvider } = require('../stub/provider')
|
||||||
const PendingTransactionTracker = require('../../app/scripts/lib/pending-tx-tracker')
|
const PendingTransactionTracker = require('../../app/scripts/lib/pending-tx-tracker')
|
||||||
|
const MockTxGen = require('../lib/mock-tx-gen')
|
||||||
|
const sinon = require('sinon')
|
||||||
const noop = () => true
|
const noop = () => true
|
||||||
const currentNetworkId = 42
|
const currentNetworkId = 42
|
||||||
const otherNetworkId = 36
|
const otherNetworkId = 36
|
||||||
@ -50,6 +52,55 @@ describe('PendingTransactionTracker', function () {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('_checkPendingTx state management', function () {
|
||||||
|
let stub
|
||||||
|
|
||||||
|
afterEach(function () {
|
||||||
|
if (stub) {
|
||||||
|
stub.restore()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should become failed if another tx with the same nonce succeeds', async function () {
|
||||||
|
|
||||||
|
// SETUP
|
||||||
|
const txGen = new MockTxGen()
|
||||||
|
|
||||||
|
txGen.generate({
|
||||||
|
id: '456',
|
||||||
|
value: '0x01',
|
||||||
|
hash: '0xbad',
|
||||||
|
status: 'confirmed',
|
||||||
|
nonce: '0x01',
|
||||||
|
}, { count: 1 })
|
||||||
|
|
||||||
|
const pending = txGen.generate({
|
||||||
|
id: '123',
|
||||||
|
value: '0x02',
|
||||||
|
hash: '0xfad',
|
||||||
|
status: 'submitted',
|
||||||
|
nonce: '0x01',
|
||||||
|
}, { count: 1 })[0]
|
||||||
|
|
||||||
|
stub = sinon.stub(pendingTxTracker, 'getPendingTransactions')
|
||||||
|
.returns(txGen.txs)
|
||||||
|
|
||||||
|
// THE EXPECTATION
|
||||||
|
const spy = sinon.spy()
|
||||||
|
pendingTxTracker.on('tx:failed', (txId, err) => {
|
||||||
|
assert.equal(txId, pending.id, 'should fail the pending tx')
|
||||||
|
assert.equal(err.name, 'NonceTakenErr', 'should emit a nonce taken error.')
|
||||||
|
spy(txId, err)
|
||||||
|
})
|
||||||
|
|
||||||
|
// THE METHOD
|
||||||
|
await pendingTxTracker._checkPendingTx(pending)
|
||||||
|
|
||||||
|
// THE ASSERTION
|
||||||
|
return sinon.assert.calledWith(spy, pending.id, 'tx failed should be emitted')
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
describe('#checkForTxInBlock', function () {
|
describe('#checkForTxInBlock', function () {
|
||||||
it('should return if no pending transactions', function () {
|
it('should return if no pending transactions', function () {
|
||||||
// throw a type error if it trys to do anything on the block
|
// throw a type error if it trys to do anything on the block
|
||||||
@ -239,4 +290,4 @@ describe('PendingTransactionTracker', function () {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user