diff options
author | Kevin Serrano <kevin.serrano@consensys.net> | 2017-10-10 02:54:16 +0800 |
---|---|---|
committer | Kevin Serrano <kevin.serrano@consensys.net> | 2017-10-10 02:54:16 +0800 |
commit | 5ae5ee9a2080017d56f7096a8fe5bef54368603a (patch) | |
tree | 41059e0891f120754ab08f8629fb3093db4dbe5c /test/unit | |
parent | e557d7f7563d6e9ac9a9a98f012a324ce3c0881a (diff) | |
parent | 4a4338c1f4669f621fc39d34b06a77f247c7ce65 (diff) | |
download | tangerine-wallet-browser-5ae5ee9a2080017d56f7096a8fe5bef54368603a.tar tangerine-wallet-browser-5ae5ee9a2080017d56f7096a8fe5bef54368603a.tar.gz tangerine-wallet-browser-5ae5ee9a2080017d56f7096a8fe5bef54368603a.tar.bz2 tangerine-wallet-browser-5ae5ee9a2080017d56f7096a8fe5bef54368603a.tar.lz tangerine-wallet-browser-5ae5ee9a2080017d56f7096a8fe5bef54368603a.tar.xz tangerine-wallet-browser-5ae5ee9a2080017d56f7096a8fe5bef54368603a.tar.zst tangerine-wallet-browser-5ae5ee9a2080017d56f7096a8fe5bef54368603a.zip |
Merge branch 'master' into precision-fix
Diffstat (limited to 'test/unit')
-rw-r--r-- | test/unit/nodeify-test.js | 7 | ||||
-rw-r--r-- | test/unit/pending-tx-test.js | 54 |
2 files changed, 56 insertions, 5 deletions
diff --git a/test/unit/nodeify-test.js b/test/unit/nodeify-test.js index 537dae605..c7b127889 100644 --- a/test/unit/nodeify-test.js +++ b/test/unit/nodeify-test.js @@ -18,14 +18,13 @@ describe('nodeify', function () { }) }) - it('should throw if the last argument is not a function', function (done) { + it('should allow the last argument to not be a function', function (done) { const nodified = nodeify(obj.promiseFunc, obj) try { nodified('baz') - done(new Error('should have thrown if the last argument is not a function')) - } catch (err) { - assert.equal(err.message, 'callback is not a function') done() + } catch (err) { + done(new Error('should not have thrown if the last argument is not a function')) } }) }) diff --git a/test/unit/pending-tx-test.js b/test/unit/pending-tx-test.js index 6b62bb5b1..32421a44f 100644 --- a/test/unit/pending-tx-test.js +++ b/test/unit/pending-tx-test.js @@ -5,6 +5,8 @@ const ObservableStore = require('obs-store') const clone = require('clone') const { createStubedProvider } = require('../stub/provider') const PendingTransactionTracker = require('../../app/scripts/lib/pending-tx-tracker') +const MockTxGen = require('../lib/mock-tx-gen') +const sinon = require('sinon') const noop = () => true const currentNetworkId = 42 const otherNetworkId = 36 @@ -46,10 +48,60 @@ describe('PendingTransactionTracker', function () { } }, getPendingTransactions: () => {return []}, + getCompletedTransactions: () => {return []}, publishTransaction: () => {}, }) }) + 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, 'getCompletedTransactions') + .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 + assert.ok(spy.calledWith(pending.id), 'tx failed should be emitted') + }) + }) + describe('#checkForTxInBlock', function () { it('should return if no pending transactions', function () { // throw a type error if it trys to do anything on the block @@ -239,4 +291,4 @@ describe('PendingTransactionTracker', function () { }) }) }) -})
\ No newline at end of file +}) |