A Metamask fork with Infura removed and default networks editable
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.
ciphermask/ui/app/pages/add-token/tests/add-token.test.js

116 lines
3.1 KiB

import assert from 'assert'
import React from 'react'
import { Provider } from 'react-redux'
import sinon from 'sinon'
import configureMockStore from 'redux-mock-store'
import { mountWithRouter } from '../../../../../test/lib/render-helpers'
import AddToken from '..'
describe('Add Token', function () {
let wrapper
const state = {
metamask: {
tokens: [],
},
}
const store = configureMockStore()(state)
const props = {
history: {
push: sinon.stub().callsFake(() => undefined),
},
setPendingTokens: sinon.spy(),
clearPendingTokens: sinon.spy(),
tokens: [],
identities: {},
mostRecentOverviewPage: '/',
}
describe('Add Token', function () {
before(function () {
wrapper = mountWithRouter(
<Provider store={store}>
<AddToken.WrappedComponent {...props} />
</Provider>,
store,
)
wrapper.find({ name: 'customToken' }).simulate('click')
})
afterEach(function () {
props.history.push.reset()
})
it('next button is disabled when no fields are populated', function () {
const nextButton = wrapper.find(
'.button.btn-secondary.page-container__footer-button',
)
assert.strictEqual(nextButton.props().disabled, true)
})
it('edits token address', function () {
const tokenAddress = '0x617b3f8050a0BD94b6b1da02B4384eE5B4DF13F4'
const event = { target: { value: tokenAddress } }
const customAddress = wrapper.find('input#custom-address')
customAddress.simulate('change', event)
assert.strictEqual(
wrapper.find('AddToken').instance().state.customAddress,
tokenAddress,
)
})
it('edits token symbol', function () {
const tokenSymbol = 'META'
const event = { target: { value: tokenSymbol } }
const customAddress = wrapper.find('#custom-symbol')
customAddress.last().simulate('change', event)
assert.strictEqual(
wrapper.find('AddToken').instance().state.customSymbol,
tokenSymbol,
)
})
it('edits token decimal precision', function () {
const tokenPrecision = '2'
const event = { target: { value: tokenPrecision } }
const customAddress = wrapper.find('#custom-decimals')
customAddress.last().simulate('change', event)
assert.strictEqual(
wrapper.find('AddToken').instance().state.customDecimals,
tokenPrecision,
)
})
it('next', function () {
const nextButton = wrapper.find(
'.button.btn-secondary.page-container__footer-button',
)
nextButton.simulate('click')
assert(props.setPendingTokens.calledOnce)
assert(props.history.push.calledOnce)
assert.strictEqual(
props.history.push.getCall(0).args[0],
'/confirm-add-token',
)
})
it('cancels', function () {
const cancelButton = wrapper.find(
'button.btn-default.page-container__footer-button',
)
cancelButton.simulate('click')
assert(props.clearPendingTokens.calledOnce)
assert.strictEqual(props.history.push.getCall(0).args[0], '/')
})
})
})