From ead990a734e0caf0ce0e5d0297c487756894acf2 Mon Sep 17 00:00:00 2001 From: Jacob Evans Date: Wed, 31 Jan 2018 16:19:47 +1100 Subject: Nonce tracker subprovider Caches the nonce when a request to getTransactionCount is made and increments the pending nonce after successful transactions --- .../test/unit/nonce_tracker_subprovider_test.ts | 195 +++++++++++++++++++++ 1 file changed, 195 insertions(+) create mode 100644 packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts (limited to 'packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts') diff --git a/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts b/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts new file mode 100644 index 000000000..a99f1f9fb --- /dev/null +++ b/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts @@ -0,0 +1,195 @@ +import * as chai from 'chai'; +import * as _ from 'lodash'; +import Web3 = require('web3'); +import Web3ProviderEngine = require('web3-provider-engine'); +import FixtureSubprovider = require('web3-provider-engine/subproviders/fixture'); + +import promisify = require('es6-promisify'); +import EthereumTx = require('ethereumjs-tx'); + +import { NonceTrackerSubprovider } from '../../src'; +import { DoneCallback } from '../../src/types'; +import { chaiSetup } from '../chai_setup'; +import { reportCallbackErrors } from '../utils/report_callback_errors'; + +import { Subprovider } from '../../src/subproviders/subprovider'; + +const expect = chai.expect; +chaiSetup.configure(); + +describe('NonceTrackerSubprovider', () => { + let provider: Web3ProviderEngine; + it('successfully caches the transaction count', async () => { + provider = new Web3ProviderEngine(); + let called = false; + const nonceTrackerSubprovider = new NonceTrackerSubprovider(); + provider.addProvider(nonceTrackerSubprovider); + provider.addProvider(new FixtureSubprovider({ + 'eth_getBlockByNumber': '0x01', + 'eth_getTransactionCount': (data: any, next: any, end: any) => { + if (called) { + return end(null, '0x99'); + } else { + called = true; + end(null, '0x01'); + } + }, + })); + provider.start(); + + const payload = { + jsonrpc: '2.0', + method: 'eth_getTransactionCount', + params: ['0x0', 'pending'], + id: 1, + }; + + const response = await promisify(provider.sendAsync, provider)(payload); + expect(response.result).to.be.eq('0x01'); + const secondResponse = await promisify(provider.sendAsync, provider)(payload); + expect(secondResponse.result).to.be.eq('0x01'); + }); + it('does not cache the result for latest transaction count', async () => { + provider = new Web3ProviderEngine(); + let called = false; + const nonceTrackerSubprovider = new NonceTrackerSubprovider(); + provider.addProvider(nonceTrackerSubprovider); + provider.addProvider(new FixtureSubprovider({ + 'eth_getBlockByNumber': '0x01', + 'eth_getTransactionCount': (data: any, next: any, end: any) => { + if (called) { + return end(null, '0x99'); + } else { + called = true; + end(null, '0x01'); + } + }, + })); + provider.start(); + + const payload = { + jsonrpc: '2.0', + method: 'eth_getTransactionCount', + params: ['0x0', 'latest'], + id: 1, + }; + + const response = await promisify(provider.sendAsync, provider)(payload); + expect(response.result).to.be.eq('0x01'); + const secondResponse = await promisify(provider.sendAsync, provider)(payload); + expect(secondResponse.result).to.be.eq('0x99'); + }); + it('clears the cache on a Nonce Too Low Error', async () => { + provider = new Web3ProviderEngine(); + let called = false; + const nonceTrackerSubprovider = new NonceTrackerSubprovider(); + provider.addProvider(nonceTrackerSubprovider); + provider.addProvider(new FixtureSubprovider({ + 'eth_getBlockByNumber': '0x01', + 'eth_getTransactionCount': (data: any, next: any, end: any) => { + if (called) { + return end(null, '0x99'); + } else { + called = true; + end(null, '0x01'); + } + }, + 'eth_sendRawTransaction': (data: any, next: any, end: any) => { + end(new Error('Transaction nonce is too low')); + }, + })); + provider.start(); + + const noncePayload = { + jsonrpc: '2.0', + method: 'eth_getTransactionCount', + params: ['0x1f36f546477cda21bf2296c50976f2740247906f', 'pending'], + id: 1, + }; + const txParams = [ + '0x', + '0x09184e72a000', + '0x2710', + '0x0000000000000000000000000000000000000000', + '0x', + '0x7f7465737432000000000000000000000000000000000000000000000000000000600057', + '0x1c', + '0x5e1d3a76fbf824220eafc8c79ad578ad2b67d01b0c2425eb1f1347e8f50882ab', + '0x5bd428537f05f9830e93792f90ea6a3e2d1ee84952dd96edbae9f658f831ab13' + ]; + + const transaction = new EthereumTx(txParams); + const txPayload = { + jsonrpc: '2.0', + method: 'eth_sendRawTransaction', + params: [transaction.serialize()], + id: 1, + }; + + const response = await promisify(provider.sendAsync, provider)(noncePayload); + expect(response.result).to.be.eq('0x01'); + const secondResponse = await promisify(provider.sendAsync, provider)(noncePayload); + expect(secondResponse.result).to.be.eq('0x01'); + try { + const txResponse = await promisify(provider.sendAsync, provider)(txPayload); + } catch (err) { + const thirdResponse = await promisify(provider.sendAsync, provider)(noncePayload); + expect(thirdResponse.result).to.be.eq('0x99'); + } + }); + it('increments the used nonce', async () => { + provider = new Web3ProviderEngine(); + let called = false; + const nonceTrackerSubprovider = new NonceTrackerSubprovider(); + provider.addProvider(nonceTrackerSubprovider); + provider.addProvider(new FixtureSubprovider({ + 'eth_getBlockByNumber': '0x01', + 'eth_getTransactionCount': (data: any, next: any, end: any) => { + if (called) { + return end(null, '0x99'); + } else { + called = true; + end(null, '0x00'); + } + }, + 'eth_sendRawTransaction': (data: any, next: any, end: any) => { + end(null); + }, + })); + provider.start(); + + const noncePayload = { + jsonrpc: '2.0', + method: 'eth_getTransactionCount', + params: ['0x1f36f546477cda21bf2296c50976f2740247906f', 'pending'], + id: 1, + }; + const txParams = [ + '0x', + '0x09184e72a000', + '0x2710', + '0x0000000000000000000000000000000000000000', + '0x', + '0x7f7465737432000000000000000000000000000000000000000000000000000000600057', + '0x1c', + '0x5e1d3a76fbf824220eafc8c79ad578ad2b67d01b0c2425eb1f1347e8f50882ab', + '0x5bd428537f05f9830e93792f90ea6a3e2d1ee84952dd96edbae9f658f831ab13' + ]; + + const transaction = new EthereumTx(txParams); + const txPayload = { + jsonrpc: '2.0', + method: 'eth_sendRawTransaction', + params: [transaction.serialize()], + id: 1, + }; + + const response = await promisify(provider.sendAsync, provider)(noncePayload); + expect(response.result).to.be.eq('0x00'); + const secondResponse = await promisify(provider.sendAsync, provider)(noncePayload); + expect(secondResponse.result).to.be.eq('0x00'); + const txResponse = await promisify(provider.sendAsync, provider)(txPayload); + const thirdResponse = await promisify(provider.sendAsync, provider)(noncePayload); + expect(thirdResponse.result).to.be.eq('0x01'); + }); +}); -- cgit v1.2.3 From 58dd90b7b7408a04a39e2e643c77bbf86859df1d Mon Sep 17 00:00:00 2001 From: Jacob Evans Date: Wed, 31 Jan 2018 16:23:51 +1100 Subject: Prettify --- .../test/unit/nonce_tracker_subprovider_test.ts | 121 +++++++++++---------- 1 file changed, 62 insertions(+), 59 deletions(-) (limited to 'packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts') diff --git a/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts b/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts index a99f1f9fb..9bb8268cb 100644 --- a/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts +++ b/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts @@ -1,6 +1,5 @@ import * as chai from 'chai'; import * as _ from 'lodash'; -import Web3 = require('web3'); import Web3ProviderEngine = require('web3-provider-engine'); import FixtureSubprovider = require('web3-provider-engine/subproviders/fixture'); @@ -8,11 +7,7 @@ import promisify = require('es6-promisify'); import EthereumTx = require('ethereumjs-tx'); import { NonceTrackerSubprovider } from '../../src'; -import { DoneCallback } from '../../src/types'; import { chaiSetup } from '../chai_setup'; -import { reportCallbackErrors } from '../utils/report_callback_errors'; - -import { Subprovider } from '../../src/subproviders/subprovider'; const expect = chai.expect; chaiSetup.configure(); @@ -24,17 +19,19 @@ describe('NonceTrackerSubprovider', () => { let called = false; const nonceTrackerSubprovider = new NonceTrackerSubprovider(); provider.addProvider(nonceTrackerSubprovider); - provider.addProvider(new FixtureSubprovider({ - 'eth_getBlockByNumber': '0x01', - 'eth_getTransactionCount': (data: any, next: any, end: any) => { - if (called) { - return end(null, '0x99'); - } else { - called = true; - end(null, '0x01'); - } - }, - })); + provider.addProvider( + new FixtureSubprovider({ + eth_getBlockByNumber: '0x01', + eth_getTransactionCount: (data: any, next: any, end: any) => { + if (called) { + return end(null, '0x99'); + } else { + called = true; + end(null, '0x01'); + } + }, + }), + ); provider.start(); const payload = { @@ -54,17 +51,19 @@ describe('NonceTrackerSubprovider', () => { let called = false; const nonceTrackerSubprovider = new NonceTrackerSubprovider(); provider.addProvider(nonceTrackerSubprovider); - provider.addProvider(new FixtureSubprovider({ - 'eth_getBlockByNumber': '0x01', - 'eth_getTransactionCount': (data: any, next: any, end: any) => { - if (called) { - return end(null, '0x99'); - } else { - called = true; - end(null, '0x01'); - } - }, - })); + provider.addProvider( + new FixtureSubprovider({ + eth_getBlockByNumber: '0x01', + eth_getTransactionCount: (data: any, next: any, end: any) => { + if (called) { + return end(null, '0x99'); + } else { + called = true; + end(null, '0x01'); + } + }, + }), + ); provider.start(); const payload = { @@ -84,20 +83,22 @@ describe('NonceTrackerSubprovider', () => { let called = false; const nonceTrackerSubprovider = new NonceTrackerSubprovider(); provider.addProvider(nonceTrackerSubprovider); - provider.addProvider(new FixtureSubprovider({ - 'eth_getBlockByNumber': '0x01', - 'eth_getTransactionCount': (data: any, next: any, end: any) => { - if (called) { - return end(null, '0x99'); - } else { - called = true; - end(null, '0x01'); - } - }, - 'eth_sendRawTransaction': (data: any, next: any, end: any) => { - end(new Error('Transaction nonce is too low')); - }, - })); + provider.addProvider( + new FixtureSubprovider({ + eth_getBlockByNumber: '0x01', + eth_getTransactionCount: (data: any, next: any, end: any) => { + if (called) { + return end(null, '0x99'); + } else { + called = true; + end(null, '0x01'); + } + }, + eth_sendRawTransaction: (data: any, next: any, end: any) => { + end(new Error('Transaction nonce is too low')); + }, + }), + ); provider.start(); const noncePayload = { @@ -115,7 +116,7 @@ describe('NonceTrackerSubprovider', () => { '0x7f7465737432000000000000000000000000000000000000000000000000000000600057', '0x1c', '0x5e1d3a76fbf824220eafc8c79ad578ad2b67d01b0c2425eb1f1347e8f50882ab', - '0x5bd428537f05f9830e93792f90ea6a3e2d1ee84952dd96edbae9f658f831ab13' + '0x5bd428537f05f9830e93792f90ea6a3e2d1ee84952dd96edbae9f658f831ab13', ]; const transaction = new EthereumTx(txParams); @@ -131,7 +132,7 @@ describe('NonceTrackerSubprovider', () => { const secondResponse = await promisify(provider.sendAsync, provider)(noncePayload); expect(secondResponse.result).to.be.eq('0x01'); try { - const txResponse = await promisify(provider.sendAsync, provider)(txPayload); + await promisify(provider.sendAsync, provider)(txPayload); } catch (err) { const thirdResponse = await promisify(provider.sendAsync, provider)(noncePayload); expect(thirdResponse.result).to.be.eq('0x99'); @@ -142,20 +143,22 @@ describe('NonceTrackerSubprovider', () => { let called = false; const nonceTrackerSubprovider = new NonceTrackerSubprovider(); provider.addProvider(nonceTrackerSubprovider); - provider.addProvider(new FixtureSubprovider({ - 'eth_getBlockByNumber': '0x01', - 'eth_getTransactionCount': (data: any, next: any, end: any) => { - if (called) { - return end(null, '0x99'); - } else { - called = true; - end(null, '0x00'); - } - }, - 'eth_sendRawTransaction': (data: any, next: any, end: any) => { - end(null); - }, - })); + provider.addProvider( + new FixtureSubprovider({ + eth_getBlockByNumber: '0x01', + eth_getTransactionCount: (data: any, next: any, end: any) => { + if (called) { + return end(null, '0x99'); + } else { + called = true; + end(null, '0x00'); + } + }, + eth_sendRawTransaction: (data: any, next: any, end: any) => { + end(null); + }, + }), + ); provider.start(); const noncePayload = { @@ -173,7 +176,7 @@ describe('NonceTrackerSubprovider', () => { '0x7f7465737432000000000000000000000000000000000000000000000000000000600057', '0x1c', '0x5e1d3a76fbf824220eafc8c79ad578ad2b67d01b0c2425eb1f1347e8f50882ab', - '0x5bd428537f05f9830e93792f90ea6a3e2d1ee84952dd96edbae9f658f831ab13' + '0x5bd428537f05f9830e93792f90ea6a3e2d1ee84952dd96edbae9f658f831ab13', ]; const transaction = new EthereumTx(txParams); @@ -188,7 +191,7 @@ describe('NonceTrackerSubprovider', () => { expect(response.result).to.be.eq('0x00'); const secondResponse = await promisify(provider.sendAsync, provider)(noncePayload); expect(secondResponse.result).to.be.eq('0x00'); - const txResponse = await promisify(provider.sendAsync, provider)(txPayload); + await promisify(provider.sendAsync, provider)(txPayload); const thirdResponse = await promisify(provider.sendAsync, provider)(noncePayload); expect(thirdResponse.result).to.be.eq('0x01'); }); -- cgit v1.2.3 From 4e284f5e6cbe48b307f3d3163dd7f158c56a5e82 Mon Sep 17 00:00:00 2001 From: Jacob Evans Date: Mon, 5 Feb 2018 16:31:51 -0800 Subject: Refactor tests for reuse of the fixture subprovider --- .../test/unit/nonce_tracker_subprovider_test.ts | 156 +++++++-------------- 1 file changed, 54 insertions(+), 102 deletions(-) (limited to 'packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts') diff --git a/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts b/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts index 9bb8268cb..cffb4cdee 100644 --- a/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts +++ b/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts @@ -14,86 +14,79 @@ chaiSetup.configure(); describe('NonceTrackerSubprovider', () => { let provider: Web3ProviderEngine; + const getTransactionCountPayload = { + jsonrpc: '2.0', + method: 'eth_getTransactionCount', + params: ['0x0', 'pending'], + id: 1, + }; + const sendTransactionPayload = { + jsonrpc: '2.0', + method: 'eth_sendRawTransaction', + params: [], + id: 1, + }; + const txParams = [ + '0x', + '0x09184e72a000', + '0x2710', + '0x0000000000000000000000000000000000000000', + '0x', + '0x7f7465737432000000000000000000000000000000000000000000000000000000600057', + '0x1c', + '0x5e1d3a76fbf824220eafc8c79ad578ad2b67d01b0c2425eb1f1347e8f50882ab', + '0x5bd428537f05f9830e93792f90ea6a3e2d1ee84952dd96edbae9f658f831ab13', + ]; + function createFixtureSubprovider() { + let called = false; + const fixedBlockNumberAndTransactionCountProvider = new FixtureSubprovider({ + eth_getBlockByNumber: '0x01', + eth_getTransactionCount: (data: any, next: any, end: any) => { + if (called) { + return end(null, '0x99'); + } else { + called = true; + end(null, '0x00'); + } + }, + }); + return fixedBlockNumberAndTransactionCountProvider; + } it('successfully caches the transaction count', async () => { provider = new Web3ProviderEngine(); - let called = false; const nonceTrackerSubprovider = new NonceTrackerSubprovider(); provider.addProvider(nonceTrackerSubprovider); - provider.addProvider( - new FixtureSubprovider({ - eth_getBlockByNumber: '0x01', - eth_getTransactionCount: (data: any, next: any, end: any) => { - if (called) { - return end(null, '0x99'); - } else { - called = true; - end(null, '0x01'); - } - }, - }), - ); + provider.addProvider(createFixtureSubprovider()); provider.start(); - const payload = { - jsonrpc: '2.0', - method: 'eth_getTransactionCount', - params: ['0x0', 'pending'], - id: 1, - }; + const payload = { ...getTransactionCountPayload, params: ['0x0', 'pending'] }; const response = await promisify(provider.sendAsync, provider)(payload); - expect(response.result).to.be.eq('0x01'); + expect(response.result).to.be.eq('0x00'); const secondResponse = await promisify(provider.sendAsync, provider)(payload); - expect(secondResponse.result).to.be.eq('0x01'); + expect(secondResponse.result).to.be.eq('0x00'); }); it('does not cache the result for latest transaction count', async () => { provider = new Web3ProviderEngine(); - let called = false; const nonceTrackerSubprovider = new NonceTrackerSubprovider(); provider.addProvider(nonceTrackerSubprovider); - provider.addProvider( - new FixtureSubprovider({ - eth_getBlockByNumber: '0x01', - eth_getTransactionCount: (data: any, next: any, end: any) => { - if (called) { - return end(null, '0x99'); - } else { - called = true; - end(null, '0x01'); - } - }, - }), - ); + provider.addProvider(createFixtureSubprovider()); provider.start(); - const payload = { - jsonrpc: '2.0', - method: 'eth_getTransactionCount', - params: ['0x0', 'latest'], - id: 1, - }; + const payload = { ...getTransactionCountPayload, params: ['0x0', 'latest'] }; const response = await promisify(provider.sendAsync, provider)(payload); - expect(response.result).to.be.eq('0x01'); + expect(response.result).to.be.eq('0x00'); const secondResponse = await promisify(provider.sendAsync, provider)(payload); expect(secondResponse.result).to.be.eq('0x99'); }); it('clears the cache on a Nonce Too Low Error', async () => { provider = new Web3ProviderEngine(); - let called = false; const nonceTrackerSubprovider = new NonceTrackerSubprovider(); provider.addProvider(nonceTrackerSubprovider); + provider.addProvider(createFixtureSubprovider()); provider.addProvider( new FixtureSubprovider({ - eth_getBlockByNumber: '0x01', - eth_getTransactionCount: (data: any, next: any, end: any) => { - if (called) { - return end(null, '0x99'); - } else { - called = true; - end(null, '0x01'); - } - }, eth_sendRawTransaction: (data: any, next: any, end: any) => { end(new Error('Transaction nonce is too low')); }, @@ -102,35 +95,19 @@ describe('NonceTrackerSubprovider', () => { provider.start(); const noncePayload = { - jsonrpc: '2.0', - method: 'eth_getTransactionCount', + ...getTransactionCountPayload, params: ['0x1f36f546477cda21bf2296c50976f2740247906f', 'pending'], - id: 1, }; - const txParams = [ - '0x', - '0x09184e72a000', - '0x2710', - '0x0000000000000000000000000000000000000000', - '0x', - '0x7f7465737432000000000000000000000000000000000000000000000000000000600057', - '0x1c', - '0x5e1d3a76fbf824220eafc8c79ad578ad2b67d01b0c2425eb1f1347e8f50882ab', - '0x5bd428537f05f9830e93792f90ea6a3e2d1ee84952dd96edbae9f658f831ab13', - ]; - const transaction = new EthereumTx(txParams); const txPayload = { - jsonrpc: '2.0', - method: 'eth_sendRawTransaction', + ...sendTransactionPayload, params: [transaction.serialize()], - id: 1, }; const response = await promisify(provider.sendAsync, provider)(noncePayload); - expect(response.result).to.be.eq('0x01'); + expect(response.result).to.be.eq('0x00'); const secondResponse = await promisify(provider.sendAsync, provider)(noncePayload); - expect(secondResponse.result).to.be.eq('0x01'); + expect(secondResponse.result).to.be.eq('0x00'); try { await promisify(provider.sendAsync, provider)(txPayload); } catch (err) { @@ -138,22 +115,13 @@ describe('NonceTrackerSubprovider', () => { expect(thirdResponse.result).to.be.eq('0x99'); } }); - it('increments the used nonce', async () => { + it('increments the used nonce when a transaction successfully submits', async () => { provider = new Web3ProviderEngine(); - let called = false; const nonceTrackerSubprovider = new NonceTrackerSubprovider(); provider.addProvider(nonceTrackerSubprovider); + provider.addProvider(createFixtureSubprovider()); provider.addProvider( new FixtureSubprovider({ - eth_getBlockByNumber: '0x01', - eth_getTransactionCount: (data: any, next: any, end: any) => { - if (called) { - return end(null, '0x99'); - } else { - called = true; - end(null, '0x00'); - } - }, eth_sendRawTransaction: (data: any, next: any, end: any) => { end(null); }, @@ -162,29 +130,13 @@ describe('NonceTrackerSubprovider', () => { provider.start(); const noncePayload = { - jsonrpc: '2.0', - method: 'eth_getTransactionCount', + ...getTransactionCountPayload, params: ['0x1f36f546477cda21bf2296c50976f2740247906f', 'pending'], - id: 1, }; - const txParams = [ - '0x', - '0x09184e72a000', - '0x2710', - '0x0000000000000000000000000000000000000000', - '0x', - '0x7f7465737432000000000000000000000000000000000000000000000000000000600057', - '0x1c', - '0x5e1d3a76fbf824220eafc8c79ad578ad2b67d01b0c2425eb1f1347e8f50882ab', - '0x5bd428537f05f9830e93792f90ea6a3e2d1ee84952dd96edbae9f658f831ab13', - ]; - const transaction = new EthereumTx(txParams); const txPayload = { - jsonrpc: '2.0', - method: 'eth_sendRawTransaction', + ...sendTransactionPayload, params: [transaction.serialize()], - id: 1, }; const response = await promisify(provider.sendAsync, provider)(noncePayload); -- cgit v1.2.3 From 20590b7d35208bf3fb79ce6f06198ea995b05f91 Mon Sep 17 00:00:00 2001 From: Jacob Evans Date: Mon, 5 Feb 2018 17:11:45 -0800 Subject: Rename called to something more readable --- .../subproviders/test/unit/nonce_tracker_subprovider_test.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts') diff --git a/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts b/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts index cffb4cdee..738b8bc95 100644 --- a/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts +++ b/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts @@ -38,15 +38,16 @@ describe('NonceTrackerSubprovider', () => { '0x5bd428537f05f9830e93792f90ea6a3e2d1ee84952dd96edbae9f658f831ab13', ]; function createFixtureSubprovider() { - let called = false; + let firstGetTransactionCount = true; const fixedBlockNumberAndTransactionCountProvider = new FixtureSubprovider({ eth_getBlockByNumber: '0x01', eth_getTransactionCount: (data: any, next: any, end: any) => { - if (called) { - return end(null, '0x99'); - } else { - called = true; + // For testing caching we return different results on the second call + if (firstGetTransactionCount) { + firstGetTransactionCount = false; end(null, '0x00'); + } else { + end(null, '0x99'); } }, }); -- cgit v1.2.3 From df8de7ff517ba1386671c658d402fa7436ff4f74 Mon Sep 17 00:00:00 2001 From: Jacob Evans Date: Tue, 6 Feb 2018 11:28:40 -0800 Subject: Fixes Rename to isFirstGetTransactionCount assign nextPrefixedHexNonce as a const --- packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts') diff --git a/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts b/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts index 738b8bc95..e98d9023c 100644 --- a/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts +++ b/packages/subproviders/test/unit/nonce_tracker_subprovider_test.ts @@ -38,13 +38,13 @@ describe('NonceTrackerSubprovider', () => { '0x5bd428537f05f9830e93792f90ea6a3e2d1ee84952dd96edbae9f658f831ab13', ]; function createFixtureSubprovider() { - let firstGetTransactionCount = true; + let isFirstGetTransactionCount = true; const fixedBlockNumberAndTransactionCountProvider = new FixtureSubprovider({ eth_getBlockByNumber: '0x01', eth_getTransactionCount: (data: any, next: any, end: any) => { // For testing caching we return different results on the second call - if (firstGetTransactionCount) { - firstGetTransactionCount = false; + if (isFirstGetTransactionCount) { + isFirstGetTransactionCount = false; end(null, '0x00'); } else { end(null, '0x99'); -- cgit v1.2.3