aboutsummaryrefslogtreecommitdiffstats
path: root/test/unit/actions/tx_test.js
blob: c110f71fc9fabfe4c62a56f224d3b6758260c710 (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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// var jsdom = require('mocha-jsdom')
var assert = require('assert')
var freeze = require('deep-freeze-strict')
var path = require('path')
var sinon = require('sinon')

var actions = require(path.join(__dirname, '..', '..', '..', 'ui', 'app', 'actions.js'))
var reducers = require(path.join(__dirname, '..', '..', '..', 'ui', 'app', 'reducers.js'))

describe('tx confirmation screen', function () {
  beforeEach(function () {
    this.sinon = sinon.createSandbox()
  })

  afterEach(function () {
    this.sinon.restore()
  })

  var initialState, result

  describe('when there is only one tx', function () {
    var firstTxId = 1457634084250832

    beforeEach(function () {
      initialState = {
        appState: {
          currentView: {
            name: 'confTx',
          },
        },
        metamask: {
          unapprovedTxs: {
            '1457634084250832': {
              id: 1457634084250832,
              status: 'unconfirmed',
              time: 1457634084250,
            },
          },
        },
      }
      freeze(initialState)
    })

    describe('cancelTx', function () {
      before(function (done) {
        actions._setBackgroundConnection({
          approveTransaction (txId, cb) { cb('An error!') },
          cancelTransaction (txId, cb) { cb() },
          clearSeedWordCache (cb) { cb() },
        })

        actions.cancelTx({value: firstTxId})((action) => {
          result = reducers(initialState, action)
        })
        done()
      })

      it('should transition to the account detail view', function () {
        assert.equal(result.appState.currentView.name, 'accountDetail')
      })

      it('should have no unconfirmed txs remaining', function () {
        var count = getUnconfirmedTxCount(result)
        assert.equal(count, 0)
      })
    })
  })
})

function getUnconfirmedTxCount (state) {
  var txs = state.metamask.unapprovedTxs
  var count = Object.keys(txs).length
  return count
}