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:
parent
27c348ba77
commit
7d3da0ae96
35
app/scripts/migrations/027.js
Normal file
35
app/scripts/migrations/027.js
Normal 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
|
||||
}
|
50
test/unit/migrations/027-test.js
Normal file
50
test/unit/migrations/027-test.js
Normal 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)
|
||||
})
|
||||
})
|
Loading…
Reference in New Issue
Block a user