aboutsummaryrefslogtreecommitdiffstats
path: root/test/unit/tx-state-history-helper.js
blob: 5bb6c9bee8cab83411313c1449b761c9cc66a6b0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const assert = require('assert')
const txStateHistoryHelper = require('../../app/scripts/lib/tx-state-history-helper')
const testVault = require('../data/v17-long-history.json')


describe('tx-state-history-helper', function () {
  it('migrates history to diffs and can recover original values', function () {
    testVault.data.TransactionController.transactions.forEach((tx, index) => {
      const newHistory = txStateHistoryHelper.migrateFromSnapshotsToDiffs(tx.history)
      newHistory.forEach((newEntry, index) => {
        if (index === 0) {
          assert.equal(Array.isArray(newEntry), false, 'initial history item IS NOT a json patch obj')
        } else {
          assert.equal(Array.isArray(newEntry), true, 'non-initial history entry IS a json patch obj')
        }
        const oldEntry = tx.history[index]
        const historySubset = newHistory.slice(0, index + 1)
        const reconstructedValue = txStateHistoryHelper.replayHistory(historySubset)
        assert.deepEqual(oldEntry, reconstructedValue, 'was able to reconstruct old entry from diffs')
      })
    })
  })
})