From c76194d7c315f9fb8e536328f97a2ac2dc411097 Mon Sep 17 00:00:00 2001
From: Dan Finlay <dan@danfinlay.com>
Date: Mon, 21 Aug 2017 11:35:18 -0700
Subject: Move mock txs to tx mocking class

---
 test/lib/mock-tx-gen.js         | 40 ++++++++++++++++++++++++++++++++++++++
 test/unit/nonce-tracker-test.js | 43 ++++++++---------------------------------
 2 files changed, 48 insertions(+), 35 deletions(-)
 create mode 100644 test/lib/mock-tx-gen.js

diff --git a/test/lib/mock-tx-gen.js b/test/lib/mock-tx-gen.js
new file mode 100644
index 000000000..7aea09c59
--- /dev/null
+++ b/test/lib/mock-tx-gen.js
@@ -0,0 +1,40 @@
+const extend = require('xtend')
+const BN = require('ethereumjs-util').BN
+const template = {
+  'status': 'submitted',
+  'txParams': {
+    'from': '0x7d3517b0d011698406d6e0aed8453f0be2697926',
+    'gas': '0x30d40',
+    'value': '0x0',
+    'nonce': '0x3',
+  },
+}
+
+class TxGenerator {
+
+  constructor () {
+    this.txs = []
+  }
+
+  generate (tx = {}, opts = {}) {
+    let { count, fromNonce } = opts
+    let nonce = fromNonce || this.txs.length
+    let txs = []
+    for (let i = 0; i < count; i++) {
+      txs.push(extend(template, {
+        txParams: {
+          nonce: hexify(nonce++),
+        }
+      }, tx))
+    }
+    this.txs = this.txs.concat(txs)
+    return txs
+  }
+
+}
+
+function hexify (number) {
+  return '0x' + (new BN(number)).toString(16)
+}
+
+module.exports = TxGenerator
diff --git a/test/unit/nonce-tracker-test.js b/test/unit/nonce-tracker-test.js
index 2171d859d..225cfbae5 100644
--- a/test/unit/nonce-tracker-test.js
+++ b/test/unit/nonce-tracker-test.js
@@ -1,5 +1,6 @@
 const assert = require('assert')
 const NonceTracker = require('../../app/scripts/lib/nonce-tracker')
+const MockTxGen = require('../lib/mock-tx-gen')
 
 describe('Nonce Tracker', function () {
   let nonceTracker, provider
@@ -8,41 +9,9 @@ describe('Nonce Tracker', function () {
   let providerResultStub = {}
 
   beforeEach(function () {
-    pendingTxs = [{
-      'status': 'submitted',
-      'txParams': {
-        'from': '0x7d3517b0d011698406d6e0aed8453f0be2697926',
-        'gas': '0x30d40',
-        'value': '0x0',
-        'nonce': '0x3',
-      },
-    }]
-    confirmedTxs = [{
-      'status': 'confirmed',
-      'txParams': {
-        'from': '0x7d3517b0d011698406d6e0aed8453f0be2697926',
-        'gas': '0x30d40',
-        'value': '0x0',
-        'nonce': '0x0',
-      },
-    }, {
-      'status': 'confirmed',
-      'txParams': {
-        'from': '0x7d3517b0d011698406d6e0aed8453f0be2697926',
-        'gas': '0x30d40',
-        'value': '0x0',
-        'nonce': '0x1',
-      },
-    }, {
-      'status': 'confirmed',
-      'txParams': {
-        'from': '0x7d3517b0d011698406d6e0aed8453f0be2697926',
-        'gas': '0x30d40',
-        'value': '0x0',
-        'nonce': '0x2',
-      },
-    }]
-
+    const txGen = new MockTxGen()
+    confirmedTxs = txGen.generate({ status: 'confirmed' }, { count: 3 })
+    pendingTxs = txGen.generate({ status: 'pending' }, { count: 1 })
 
     getPendingTransactions = () => pendingTxs
     getConfirmedTransactions = () => confirmedTxs
@@ -68,6 +37,10 @@ describe('Nonce Tracker', function () {
       await nonceLock.releaseLock()
     })
 
+    it('should return 0 if there are no previous transactions', async function () {
+
+    })
+
     it('should use localNonce if network returns a nonce lower then a confirmed tx in state', async function () {
       this.timeout(15000)
       providerResultStub.result = '0x1'
-- 
cgit