You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
4.7 KiB
154 lines
4.7 KiB
7 years ago
|
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)
|
||
|
})
|
||
|
}
|