aboutsummaryrefslogtreecommitdiffstats
path: root/test/integration/lib/add-token.js
blob: 1840bdd39afe8776ae17cb9cadba9347f3e2435c (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
const reactTriggerChange = require('react-trigger-change')
const {
  timeout,
  queryAsync,
  findAsync,
} = require('../../lib/util')

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 = await queryAsync($, 'select')
  selectState.val('add token')
  reactTriggerChange(selectState[0])

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

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

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

  let addTokenTitle = await queryAsync($, '.add-token__header__title')
  assert.equal(addTokenTitle[0].textContent, 'Add Tokens', 'add token title is correct')

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

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

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

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

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

  // Click token to add
  const tokenWrapper = await queryAsync($, '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()

  // Click Next button
  let nextButton = await queryAsync($, 'button.btn-primary--lg')
  assert.equal(nextButton[0].textContent, 'Next', 'next button rendered')
  nextButton[0].click()

  // Confirm Add token
  assert.equal(
    $('.add-token__description')[0].textContent,
    'Token balance(s)',
    'confirm add token rendered'
  )
  assert.ok($('button.btn-primary--lg')[0], 'confirm add token button found')
  $('button.btn-primary--lg')[0].click()

  // Verify added token image
  let heroBalance = await queryAsync($, '.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 = await queryAsync($, 'button.btn-primary.wallet-view__add-token-button')
  assert.ok(addTokenButton[0], 'add token button present')
  addTokenButton[0].click()

  const addTokenTabs = await queryAsync($, '.add-token__header__tabs__tab')
  assert.equal(addTokenTabs.length, 2, 'expected number of tabs')
  assert.equal(addTokenTabs[1].textContent, 'Custom Token', 'Custom Token tab present')
  assert.ok(addTokenTabs[1], 'add custom token tab present')
  addTokenTabs[1].click()

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

  // Click Next button
  nextButton = await queryAsync($, 'button.btn-primary--lg')
  assert.equal(nextButton[0].textContent, 'Next', 'next button rendered')
  nextButton[0].click()

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

  $('button.btn-secondary--lg')[0].click()

  // // 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-primary--lg')[0], 'confirm add token button found')
  // $('button.btn-primary--lg')[0].click()

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