diff options
author | frankiebee <frankie.diamond@gmail.com> | 2018-03-27 09:09:28 +0800 |
---|---|---|
committer | frankiebee <frankie.diamond@gmail.com> | 2018-03-28 07:49:13 +0800 |
commit | f0f45e6fe19fec01f7fff9df0e9e04015f82f3d2 (patch) | |
tree | a04ef6bac867cd434713796b7b8bd600671f999b /test/unit/migrations | |
parent | 43dde3cbde4118ef5d5b40faca6af8b308a1a902 (diff) | |
download | tangerine-wallet-browser-f0f45e6fe19fec01f7fff9df0e9e04015f82f3d2.tar tangerine-wallet-browser-f0f45e6fe19fec01f7fff9df0e9e04015f82f3d2.tar.gz tangerine-wallet-browser-f0f45e6fe19fec01f7fff9df0e9e04015f82f3d2.tar.bz2 tangerine-wallet-browser-f0f45e6fe19fec01f7fff9df0e9e04015f82f3d2.tar.lz tangerine-wallet-browser-f0f45e6fe19fec01f7fff9df0e9e04015f82f3d2.tar.xz tangerine-wallet-browser-f0f45e6fe19fec01f7fff9df0e9e04015f82f3d2.tar.zst tangerine-wallet-browser-f0f45e6fe19fec01f7fff9df0e9e04015f82f3d2.zip |
migration for removing unnecessary transactions from state
Diffstat (limited to 'test/unit/migrations')
-rw-r--r-- | test/unit/migrations/023-test.js | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/test/unit/migrations/023-test.js b/test/unit/migrations/023-test.js new file mode 100644 index 000000000..be432d9fa --- /dev/null +++ b/test/unit/migrations/023-test.js @@ -0,0 +1,99 @@ +const assert = require('assert') +const migration23 = require('../../../app/scripts/migrations/023') +const properTime = (new Date()).getTime() +const storage = { + "meta": {}, + "data": { + "TransactionController": { + "transactions": [ + ] + }, + }, +} + +const transactions = [] +const transactions40 = [] +const transactions20 = [] + +const txStates = [ + 'unapproved', + 'approved', + 'signed', + 'submitted', + 'confirmed', + 'rejected', + 'failed', + 'dropped', +] + +const deletableTxStates = [ + 'confirmed', + 'rejected', + 'failed', + 'dropped', +] + +let nonDeletableCount = 0 + +let status +while (transactions.length <= 100) { + status = txStates[Math.floor(Math.random() * Math.floor(txStates.length - 1))] + if (!deletableTxStates.find((s) => s === status)) nonDeletableCount++ + transactions.push({status}) +} + +while (transactions40.length < 40) { + status = txStates[Math.floor(Math.random() * Math.floor(txStates.length - 1))] + transactions40.push({status}) +} + +while (transactions20.length < 20) { + status = txStates[Math.floor(Math.random() * Math.floor(txStates.length - 1))] + transactions20.push({status}) +} + + + +storage.data.TransactionController.transactions = transactions + +describe('storage is migrated successfully and the proper transactions are remove from state', () => { + it('should remove transactions that are unneeded', (done) => { + migration23.migrate(storage) + .then((migratedData) => { + let leftoverNonDeletableTxCount = 0 + const migratedTransactions = migratedData.data.TransactionController.transactions + migratedTransactions.forEach((tx) => { + if (!deletableTxStates.find((s) => s === tx.status)) { + leftoverNonDeletableTxCount++ + } + }) + assert.equal(leftoverNonDeletableTxCount, nonDeletableCount, 'migration shouldnt delete transactions we want to keep') + assert((migratedTransactions.length >= 40), `should be equal or greater to 40 if they are non deletable states got ${migratedTransactions.length} transactions`) + done() + }).catch(done) + }) + + it('should not remove any transactions because 40 is the expectable limit', (done) => { + storage.meta.version = 22 + storage.data.TransactionController.transactions = transactions40 + migration23.migrate(storage) + .then((migratedData) => { + const migratedTransactions = migratedData.data.TransactionController.transactions + + assert.equal(migratedTransactions.length, 40, 'migration shouldnt delete when at limit') + done() + }).catch(done) + }) + + it('should not remove any transactions because 20 txs is under the expectable limit', (done) => { + storage.meta.version = 22 + storage.data.TransactionController.transactions = transactions20 + migration23.migrate(storage) + .then((migratedData) => { + const migratedTransactions = migratedData.data.TransactionController.transactions + assert.equal(migratedTransactions.length, 20, 'migration shouldnt delete when under limit') + done() + }).catch(done) + }) + +}) |