1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00

migration 27 - remove rejected transactions from state

This commit is contained in:
frankiebee 2018-06-25 11:45:00 -07:00
parent 27c348ba77
commit 7d3da0ae96
2 changed files with 85 additions and 0 deletions

View File

@ -0,0 +1,35 @@
// next version number
const version = 27
/*
normalizes txParams on unconfirmed txs
*/
const clone = require('clone')
module.exports = {
version,
migrate: async function (originalVersionedData) {
const versionedData = clone(originalVersionedData)
versionedData.meta.version = version
const state = versionedData.data
const newState = transformState(state)
versionedData.data = newState
return versionedData
},
}
function transformState (state) {
const newState = state
if (newState.TransactionController) {
if (newState.TransactionController.transactions) {
const transactions = newState.TransactionController.transactions
newState.TransactionController.transactions = transactions.filter((txMeta) => txMeta.status !== 'rejected')
}
}
return newState
}

View File

@ -0,0 +1,50 @@
const assert = require('assert')
const migration27 = require('../../../app/scripts/migrations/027')
const oldStorage = {
"meta": {},
"data": {
"TransactionController": {
"transactions": [
]
},
},
}
const transactions = []
while (transactions.length < 9) {
transactions.push({status: 'rejected'})
transactions.push({status: 'unapproved'})
transactions.push({status: 'approved'})
}
oldStorage.data.TransactionController.transactions = transactions
describe('migration #27', () => {
it('should remove rejected transactions', (done) => {
migration27.migrate(oldStorage)
.then((newStorage) => {
const newTransactions = newStorage.data.TransactionController.transactions
assert.equal(newTransactions.length, 6, 'transactions is expected to have the length of 6')
newTransactions.forEach((txMeta) => {
if (txMeta.status === 'rejected') done(new Error('transaction was found with a status of rejected'))
})
done()
})
.catch(done)
})
it('should successfully migrate first time state', (done) => {
migration27.migrate({
meta: {},
data: require('../../../app/scripts/first-time-state'),
})
.then((migratedData) => {
assert.equal(migratedData.meta.version, migration27.version)
done()
}).catch(done)
})
})