aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrances Pangilinan <frankie.diamond@gmail.com>2016-12-15 04:56:53 +0800
committerFrances Pangilinan <frankie.diamond@gmail.com>2016-12-15 04:56:53 +0800
commit5aba096bd1afe23cf3df491ef67e24858e6efc01 (patch)
tree553e31da9ea77c0f3811079e3631fb5ecb1c248b
parent090935f90aa3c2589fee7bc038c8f4fcf77da03c (diff)
downloadtangerine-wallet-browser-5aba096bd1afe23cf3df491ef67e24858e6efc01.tar
tangerine-wallet-browser-5aba096bd1afe23cf3df491ef67e24858e6efc01.tar.gz
tangerine-wallet-browser-5aba096bd1afe23cf3df491ef67e24858e6efc01.tar.bz2
tangerine-wallet-browser-5aba096bd1afe23cf3df491ef67e24858e6efc01.tar.lz
tangerine-wallet-browser-5aba096bd1afe23cf3df491ef67e24858e6efc01.tar.xz
tangerine-wallet-browser-5aba096bd1afe23cf3df491ef67e24858e6efc01.tar.zst
tangerine-wallet-browser-5aba096bd1afe23cf3df491ef67e24858e6efc01.zip
add Test for txManager. As well as fix tests to account for txManager.
-rw-r--r--test/integration/lib/keyring-controller-test.js4
-rw-r--r--test/lib/mock-config-manager.js1
-rw-r--r--test/unit/config-manager-test.js83
-rw-r--r--test/unit/idStore-migration-test.js4
-rw-r--r--test/unit/keyring-controller-test.js4
-rw-r--r--test/unit/tx-manager-test.js169
6 files changed, 185 insertions, 80 deletions
diff --git a/test/integration/lib/keyring-controller-test.js b/test/integration/lib/keyring-controller-test.js
index ae5ecc578..2d16e2f95 100644
--- a/test/integration/lib/keyring-controller-test.js
+++ b/test/integration/lib/keyring-controller-test.js
@@ -20,6 +20,10 @@ QUnit.module('Old Style Vaults', {
this.keyringController = new KeyringController({
configManager: this.configManager,
getNetwork: () => { return '2' },
+ txManager: {
+ getTxList: () => [],
+ getUnapprovedTxList: () => []
+ },
})
this.ethStore = {
diff --git a/test/lib/mock-config-manager.js b/test/lib/mock-config-manager.js
index ccd518c68..b79f63090 100644
--- a/test/lib/mock-config-manager.js
+++ b/test/lib/mock-config-manager.js
@@ -9,6 +9,7 @@ module.exports = function() {
function loadData () {
var oldData = getOldStyleData()
var newData
+
try {
newData = JSON.parse(window.localStorage[STORAGE_KEY])
} catch (e) {}
diff --git a/test/unit/config-manager-test.js b/test/unit/config-manager-test.js
index 206460ffb..61226d624 100644
--- a/test/unit/config-manager-test.js
+++ b/test/unit/config-manager-test.js
@@ -215,7 +215,7 @@ describe('config-manager', function() {
describe('transactions', function() {
beforeEach(function() {
- configManager._saveTxList([])
+ configManager.setTxList([])
})
describe('#getTxList', function() {
@@ -226,90 +226,13 @@ describe('config-manager', function() {
})
})
- describe('#_saveTxList', function() {
+ describe('#setTxList', function() {
it('saves the submitted data to the tx list', function() {
var target = [{ foo: 'bar' }]
- configManager._saveTxList(target)
+ configManager.setTxList(target)
var result = configManager.getTxList()
assert.equal(result[0].foo, 'bar')
})
})
-
- describe('#addTx', function() {
- it('adds a tx returned in getTxList', function() {
- var tx = { id: 1 }
- configManager.addTx(tx)
- var result = configManager.getTxList()
- assert.ok(Array.isArray(result))
- assert.equal(result.length, 1)
- assert.equal(result[0].id, 1)
- })
-
- it('cuts off early txs beyond a limit', function() {
- const limit = configManager.txLimit
- for (let i = 0; i < limit + 1; i++) {
- let tx = { id: i }
- configManager.addTx(tx)
- }
- var result = configManager.getTxList()
- assert.equal(result.length, limit, `limit of ${limit} txs enforced`)
- assert.equal(result[0].id, 1, 'early txs truncted')
- })
- })
-
- describe('#confirmTx', function() {
- it('sets the tx status to confirmed', function() {
- var tx = { id: 1, status: 'unconfirmed' }
- configManager.addTx(tx)
- configManager.confirmTx(1)
- var result = configManager.getTxList()
- assert.ok(Array.isArray(result))
- assert.equal(result.length, 1)
- assert.equal(result[0].status, 'confirmed')
- })
- })
-
- describe('#rejectTx', function() {
- it('sets the tx status to rejected', function() {
- var tx = { id: 1, status: 'unconfirmed' }
- configManager.addTx(tx)
- configManager.rejectTx(1)
- var result = configManager.getTxList()
- assert.ok(Array.isArray(result))
- assert.equal(result.length, 1)
- assert.equal(result[0].status, 'rejected')
- })
- })
-
- describe('#updateTx', function() {
- it('replaces the tx with the same id', function() {
- configManager.addTx({ id: '1', status: 'unconfirmed' })
- configManager.addTx({ id: '2', status: 'confirmed' })
- configManager.updateTx({ id: '1', status: 'blah', hash: 'foo' })
- var result = configManager.getTx('1')
- assert.equal(result.hash, 'foo')
- })
- })
-
- describe('#unconfirmedTxs', function() {
- it('returns unconfirmed txs in a hash', function() {
- configManager.addTx({ id: '1', status: 'unconfirmed' })
- configManager.addTx({ id: '2', status: 'confirmed' })
- let result = configManager.unconfirmedTxs()
- assert.equal(typeof result, 'object')
- assert.equal(result['1'].status, 'unconfirmed')
- assert.equal(result['0'], undefined)
- assert.equal(result['2'], undefined)
- })
- })
-
- describe('#getTx', function() {
- it('returns a tx with the requested id', function() {
- configManager.addTx({ id: '1', status: 'unconfirmed' })
- configManager.addTx({ id: '2', status: 'confirmed' })
- assert.equal(configManager.getTx('1').status, 'unconfirmed')
- assert.equal(configManager.getTx('2').status, 'confirmed')
- })
- })
})
})
diff --git a/test/unit/idStore-migration-test.js b/test/unit/idStore-migration-test.js
index ac8e23d22..639eb0d72 100644
--- a/test/unit/idStore-migration-test.js
+++ b/test/unit/idStore-migration-test.js
@@ -64,6 +64,10 @@ describe('IdentityStore to KeyringController migration', function() {
addAccount(acct) { newAccounts.push(ethUtil.addHexPrefix(acct)) },
del(acct) { delete newAccounts[acct] },
},
+ txManager: {
+ getTxList: () => [],
+ getUnapprovedTxList: () => []
+ },
})
// Stub out the browser crypto for a mock encryptor.
diff --git a/test/unit/keyring-controller-test.js b/test/unit/keyring-controller-test.js
index 69a57ef52..a2b65a6b5 100644
--- a/test/unit/keyring-controller-test.js
+++ b/test/unit/keyring-controller-test.js
@@ -23,6 +23,10 @@ describe('KeyringController', function() {
keyringController = new KeyringController({
configManager: configManagerGen(),
+ txManager: {
+ getTxList: () => [],
+ getUnapprovedTxList: () => []
+ },
ethStore: {
addAccount(acct) { accounts.push(ethUtil.addHexPrefix(acct)) },
},
diff --git a/test/unit/tx-manager-test.js b/test/unit/tx-manager-test.js
new file mode 100644
index 000000000..0a7c5e83b
--- /dev/null
+++ b/test/unit/tx-manager-test.js
@@ -0,0 +1,169 @@
+const assert = require('assert')
+const extend = require('xtend')
+const STORAGE_KEY = 'metamask-persistance-key'
+const TransactionManager = require('../../app/scripts/transaction-manager')
+
+describe('Transaction Manager', function() {
+ let txManager
+
+ const onTxDoneCb = () => true
+ beforeEach(function() {
+ txManager = new TransactionManager ({
+ TxListFromStore: [],
+ setTxList: () => {},
+ provider: "testnet",
+ txLimit: 40,
+ })
+ })
+
+ describe('#getTxList', function() {
+ it('when new should return empty array', function() {
+ var result = txManager.getTxList()
+ assert.ok(Array.isArray(result))
+ assert.equal(result.length, 0)
+ })
+ it('should also return transactions from local storage if any', function() {
+
+ })
+ })
+
+ describe('#_saveTxList', function() {
+ it('saves the submitted data to the tx list', function() {
+ var target = [{ foo: 'bar' }]
+ txManager._saveTxList(target)
+ var result = txManager.getTxList()
+ assert.equal(result[0].foo, 'bar')
+ })
+ })
+
+ describe('#addTx', function() {
+ it('adds a tx returned in getTxList', function() {
+ var tx = { id: 1 }
+ txManager.addTx(tx, onTxDoneCb)
+ var result = txManager.getTxList()
+ assert.ok(Array.isArray(result))
+ assert.equal(result.length, 1)
+ assert.equal(result[0].id, 1)
+ })
+
+ it('cuts off early txs beyond a limit', function() {
+ const limit = txManager.txLimit
+ for (let i = 0; i < limit + 1; i++) {
+ let tx = { id: i, time: new Date()}
+ txManager.addTx(tx, onTxDoneCb)
+ }
+ var result = txManager.getTxList()
+ assert.equal(result.length, limit, `limit of ${limit} txs enforced`)
+ assert.equal(result[0].id, 1, 'early txs truncted')
+ })
+ })
+
+ describe('#setTxStatusSigned', function() {
+ it('sets the tx status to signed', function() {
+ var tx = { id: 1, status: 'unapproved' }
+ txManager.addTx(tx, onTxDoneCb)
+ txManager.setTxStatusSigned(1)
+ var result = txManager.getTxList()
+ assert.ok(Array.isArray(result))
+ assert.equal(result.length, 1)
+ assert.equal(result[0].status, 'signed')
+ })
+
+ it('should emit a signed event to signal the exciton of callback', (done) => {
+ this.timeout(10000)
+ var tx = { id: 1, status: 'unapproved' }
+ txManager.on('signed', function (txId) {
+ var approvalCb = this._unconfTxCbs[txId]
+ assert(approvalCb(), 'txCb was retrieved')
+ assert.equal(txId, 1)
+ assert(true, 'event listener has been triggered')
+ done()
+ })
+ txManager.addTx(tx, onTxDoneCb)
+ txManager.setTxStatusSigned(1)
+ })
+ })
+
+ describe('#setTxStatusRejected', function() {
+ it('sets the tx status to rejected', function() {
+ var tx = { id: 1, status: 'unapproved' }
+ txManager.addTx(tx)
+ txManager.setTxStatusRejected(1)
+ var result = txManager.getTxList()
+ assert.ok(Array.isArray(result))
+ assert.equal(result.length, 1)
+ assert.equal(result[0].status, 'rejected')
+ })
+
+ it('should emit a rejected event to signal the exciton of callback', (done) => {
+ this.timeout(10000)
+ var tx = { id: 1, status: 'unapproved' }
+ txManager.on('rejected', function (txId) {
+ var approvalCb = this._unconfTxCbs[txId]
+ assert(approvalCb(), 'txCb was retrieved')
+ assert.equal(txId, 1)
+ assert(true, 'event listener has been triggered')
+ done()
+ })
+ txManager.addTx(tx, onTxDoneCb)
+ txManager.setTxStatusRejected(1)
+ })
+
+ })
+
+ describe('#updateTx', function() {
+ it('replaces the tx with the same id', function() {
+ txManager.addTx({ id: '1', status: 'unapproved' }, onTxDoneCb)
+ txManager.addTx({ id: '2', status: 'confirmed' }, onTxDoneCb)
+ txManager.updateTx({ id: '1', status: 'blah', hash: 'foo' })
+ var result = txManager.getTx('1')
+ assert.equal(result.hash, 'foo')
+ })
+ })
+
+ describe('#getUnapprovedTxList', function() {
+ it('returns unapproved txs in a hash', function() {
+ txManager.addTx({ id: '1', status: 'unapproved' }, onTxDoneCb)
+ txManager.addTx({ id: '2', status: 'confirmed' }, onTxDoneCb)
+ let result = txManager.getUnapprovedTxList()
+ assert.equal(typeof result, 'object')
+ assert.equal(result['1'].status, 'unapproved')
+ assert.equal(result['0'], undefined)
+ assert.equal(result['2'], undefined)
+ })
+ })
+
+ describe('#getTx', function() {
+ it('returns a tx with the requested id', function() {
+ txManager.addTx({ id: '1', status: 'unapproved' }, onTxDoneCb)
+ txManager.addTx({ id: '2', status: 'confirmed' }, onTxDoneCb)
+ assert.equal(txManager.getTx('1').status, 'unapproved')
+ assert.equal(txManager.getTx('2').status, 'confirmed')
+ })
+ })
+
+ describe('#getFilterdTxList', function() {
+ it('returns a tx with the requested data', function() {
+ var foop = 0
+ var zoop = 0
+ for (let i = 0; i < 10; ++i ){
+ let evryOther = i % 2
+ txManager.addTx({ id: i,
+ status: evryOther ? 'unapproved' : 'confirmed',
+ txParams: {
+ from: evryOther ? 'foop' : 'zoop',
+ to: evryOther ? 'zoop' : 'foop',
+ }
+ }, onTxDoneCb)
+ evryOther ? ++foop : ++zoop
+ }
+ assert.equal(txManager.getFilterdTxList({status: 'confirmed', from: 'zoop'}).length, zoop)
+ assert.equal(txManager.getFilterdTxList({status: 'confirmed', to: 'foop'}).length, zoop)
+ assert.equal(txManager.getFilterdTxList({status: 'confirmed', from: 'foop'}).length, 0)
+ assert.equal(txManager.getFilterdTxList({status: 'confirmed'}).length, zoop)
+ assert.equal(txManager.getFilterdTxList({from: 'foop'}).length, foop)
+ assert.equal(txManager.getFilterdTxList({from: 'zoop'}).length, zoop)
+ })
+ })
+
+})