aboutsummaryrefslogtreecommitdiffstats
path: root/test/integration/lib/add-token.js
blob: dd4251cc4ecc3f1352229f3d15ed08f6a0d2fdf4 (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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
const reactTriggerChange = require('react-trigger-change')

QUnit.module('Add token flow')

QUnit.test('successful add token flow', (assert) => {
  const done = assert.async()
  runAddTokenFlowTest(assert)
    .then(done)
    .catch(err => {
      assert.notOk(err, `Error was thrown: ${err.stack}`)
      done()
    })
})

async function runAddTokenFlowTest (assert, done) {
  const selectState = $('select')
  selectState.val('add token')
  reactTriggerChange(selectState[0])

  await timeout(2000)

  // Check that no tokens have been added
  assert.ok($('.token-list-item').length === 0, 'no tokens added')

  // Go to Add Token screen
  let addTokenButton = $('button.btn-clear.wallet-view__add-token-button')
  assert.ok(addTokenButton[0], 'add token button present')
  addTokenButton[0].click()

  await timeout(1000)

  // Verify Add Token screen
  let addTokenWrapper = $('.add-token__wrapper')
  assert.ok(addTokenWrapper[0], 'add token wrapper renders')

  let addTokenTitle = $('.add-token__title')
  assert.equal(addTokenTitle[0].textContent, 'Add Token', 'add token title is correct')

  // Cancel Add Token
  const cancelAddTokenButton = $('button.btn-cancel.add-token__button')
  assert.ok(cancelAddTokenButton[0], 'cancel add token button present')
  cancelAddTokenButton.click()

  await timeout(1000)

  assert.ok($('.wallet-view')[0], 'cancelled and returned to account detail wallet view')

  // Return to Add Token Screen
  addTokenButton = $('button.btn-clear.wallet-view__add-token-button')
  assert.ok(addTokenButton[0], 'add token button present')
  addTokenButton[0].click()

  await timeout(1000)

  // Verify Add Token Screen
  addTokenWrapper = $('.add-token__wrapper')
  addTokenTitle = $('.add-token__title')
  assert.ok(addTokenWrapper[0], 'add token wrapper renders')
  assert.equal(addTokenTitle[0].textContent, 'Add Token', 'add token title is correct')

  // Search for token
  const searchInput = $('input.add-token__input')
  searchInput.val('a')
  reactTriggerChange(searchInput[0])

  await timeout()

  // Click token to add
  const tokenWrapper = $('div.add-token__token-wrapper')
  assert.ok(tokenWrapper[0], 'token found')
  const tokenImageProp = tokenWrapper.find('.add-token__token-icon').css('background-image')
  const tokenImageUrl = tokenImageProp.slice(5, -2)
  tokenWrapper[0].click()

  await timeout()

  // Click Next button
  let nextButton = $('button.btn-clear.add-token__button')
  assert.equal(nextButton[0].textContent, 'Next', 'next button rendered')
  nextButton[0].click()

  await timeout()

  // Confirm Add token
  assert.equal(
    $('.add-token__description')[0].textContent,
    'Would you like to add these tokens?',
    'confirm add token rendered'
  )
  assert.ok($('button.btn-clear.add-token__button')[0], 'confirm add token button found')
  $('button.btn-clear.add-token__button')[0].click()

  await timeout(2000)

  // Verify added token image
  let heroBalance = $('.hero-balance')
  assert.ok(heroBalance, 'rendered hero balance')
  assert.ok(tokenImageUrl.indexOf(heroBalance.find('img').attr('src')) > -1, 'token added')

  // Return to Add Token Screen
  addTokenButton = $('button.btn-clear.wallet-view__add-token-button')
  assert.ok(addTokenButton[0], 'add token button present')
  addTokenButton[0].click()

  await timeout(1000)

  const addCustom = $('.add-token__add-custom')
  assert.ok(addCustom[0], 'add custom token button present')
  addCustom[0].click()

  await timeout()

  // Input token contract address
  const customInput = $('input.add-token__add-custom-input')
  customInput.val('0x177af043D3A1Aed7cc5f2397C70248Fc6cDC056c')
  reactTriggerChange(customInput[0])

  await timeout(1000)

  // Click Next button
  nextButton = $('button.btn-clear.add-token__button')
  assert.equal(nextButton[0].textContent, 'Next', 'next button rendered')
  nextButton[0].click()

  await timeout(1000)

  // Verify symbol length error since contract address won't return symbol
  const errorMessage = $('.add-token__add-custom-error-message')
  assert.ok(errorMessage[0], 'error rendered')
  $('button.btn-cancel.add-token__button')[0].click()

  await timeout(2000)

  // // Confirm Add token
  // assert.equal(
  //   $('.add-token__description')[0].textContent,
  //   'Would you like to add these tokens?',
  //   'confirm add token rendered'
  // )
  // assert.ok($('button.btn-clear.add-token__button')[0], 'confirm add token button found')
  // $('button.btn-clear.add-token__button')[0].click()

  // // Verify added token image
  // heroBalance = $('.hero-balance')
  // assert.ok(heroBalance, 'rendered hero balance')
  // assert.ok(heroBalance.find('.identicon')[0], 'token added')
}

function timeout (time) {
  return new Promise((resolve, reject) => {
    setTimeout(resolve, time || 1500)
  })
}