mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-02 14:15:06 +01:00
badebe017f
* Add UnitInput component * Add CurrencyInput component * Add UserPreferencedCurrencyInput component * Add UserPreferencedCurrencyDisplay component * Add updatePreferences action * Add styles for CurrencyInput, CurrencyDisplay, and UnitInput * Update SettingsTab page with Primary Currency toggle * Refactor currency displays and inputs to use UserPreferenced displays and inputs * Add TokenInput component * Add UserPreferencedTokenInput component * Use TokenInput in the send screen * Fix unit tests * Fix e2e and integration tests * Remove send/CurrencyDisplay component * Replace diamond unicode character with Eth logo. Fix typos
147 lines
4.1 KiB
JavaScript
147 lines
4.1 KiB
JavaScript
import React from 'react'
|
|
import assert from 'assert'
|
|
import { shallow, mount } from 'enzyme'
|
|
import sinon from 'sinon'
|
|
import UnitInput from '../unit-input.component'
|
|
|
|
describe('UnitInput Component', () => {
|
|
describe('rendering', () => {
|
|
it('should render properly without a suffix', () => {
|
|
const wrapper = shallow(
|
|
<UnitInput />
|
|
)
|
|
|
|
assert.ok(wrapper)
|
|
assert.equal(wrapper.find('.unit-input__suffix').length, 0)
|
|
})
|
|
|
|
it('should render properly with a suffix', () => {
|
|
const wrapper = shallow(
|
|
<UnitInput
|
|
suffix="ETH"
|
|
/>
|
|
)
|
|
|
|
assert.ok(wrapper)
|
|
assert.equal(wrapper.find('.unit-input__suffix').length, 1)
|
|
assert.equal(wrapper.find('.unit-input__suffix').text(), 'ETH')
|
|
})
|
|
|
|
it('should render properly with a child omponent', () => {
|
|
const wrapper = shallow(
|
|
<UnitInput>
|
|
<div className="testing">
|
|
TESTCOMPONENT
|
|
</div>
|
|
</UnitInput>
|
|
)
|
|
|
|
assert.ok(wrapper)
|
|
assert.equal(wrapper.find('.testing').length, 1)
|
|
assert.equal(wrapper.find('.testing').text(), 'TESTCOMPONENT')
|
|
})
|
|
|
|
it('should render with an error class when props.error === true', () => {
|
|
const wrapper = shallow(
|
|
<UnitInput
|
|
error
|
|
/>
|
|
)
|
|
|
|
assert.ok(wrapper)
|
|
assert.equal(wrapper.find('.unit-input--error').length, 1)
|
|
})
|
|
})
|
|
|
|
describe('handling actions', () => {
|
|
const handleChangeSpy = sinon.spy()
|
|
const handleBlurSpy = sinon.spy()
|
|
|
|
afterEach(() => {
|
|
handleChangeSpy.resetHistory()
|
|
handleBlurSpy.resetHistory()
|
|
})
|
|
|
|
it('should focus the input on component click', () => {
|
|
const wrapper = mount(
|
|
<UnitInput />
|
|
)
|
|
|
|
assert.ok(wrapper)
|
|
const handleFocusSpy = sinon.spy(wrapper.instance(), 'handleFocus')
|
|
wrapper.instance().forceUpdate()
|
|
wrapper.update()
|
|
assert.equal(handleFocusSpy.callCount, 0)
|
|
wrapper.find('.unit-input').simulate('click')
|
|
assert.equal(handleFocusSpy.callCount, 1)
|
|
})
|
|
|
|
it('should call onChange on input changes with the value', () => {
|
|
const wrapper = mount(
|
|
<UnitInput
|
|
onChange={handleChangeSpy}
|
|
/>
|
|
)
|
|
|
|
assert.ok(wrapper)
|
|
assert.equal(handleChangeSpy.callCount, 0)
|
|
const input = wrapper.find('input')
|
|
input.simulate('change', { target: { value: 123 } })
|
|
assert.equal(handleChangeSpy.callCount, 1)
|
|
assert.ok(handleChangeSpy.calledWith(123))
|
|
assert.equal(wrapper.state('value'), 123)
|
|
})
|
|
|
|
it('should call onBlur on blur with the value', () => {
|
|
const wrapper = mount(
|
|
<UnitInput
|
|
onChange={handleChangeSpy}
|
|
onBlur={handleBlurSpy}
|
|
/>
|
|
)
|
|
|
|
assert.ok(wrapper)
|
|
assert.equal(handleChangeSpy.callCount, 0)
|
|
assert.equal(handleBlurSpy.callCount, 0)
|
|
const input = wrapper.find('input')
|
|
input.simulate('change', { target: { value: 123 } })
|
|
assert.equal(handleChangeSpy.callCount, 1)
|
|
assert.ok(handleChangeSpy.calledWith(123))
|
|
assert.equal(wrapper.state('value'), 123)
|
|
input.simulate('blur')
|
|
assert.equal(handleBlurSpy.callCount, 1)
|
|
assert.ok(handleBlurSpy.calledWith(123))
|
|
})
|
|
|
|
it('should set the component state value with props.value', () => {
|
|
const wrapper = mount(
|
|
<UnitInput
|
|
value={123}
|
|
/>
|
|
)
|
|
|
|
assert.ok(wrapper)
|
|
assert.equal(wrapper.state('value'), 123)
|
|
})
|
|
|
|
it('should update the component state value with props.value', () => {
|
|
const wrapper = mount(
|
|
<UnitInput
|
|
onChange={handleChangeSpy}
|
|
/>
|
|
)
|
|
|
|
assert.ok(wrapper)
|
|
assert.equal(handleChangeSpy.callCount, 0)
|
|
const input = wrapper.find('input')
|
|
input.simulate('change', { target: { value: 123 } })
|
|
assert.equal(wrapper.state('value'), 123)
|
|
assert.equal(handleChangeSpy.callCount, 1)
|
|
assert.ok(handleChangeSpy.calledWith(123))
|
|
wrapper.setProps({ value: 456 })
|
|
assert.equal(wrapper.state('value'), 456)
|
|
assert.equal(handleChangeSpy.callCount, 1)
|
|
})
|
|
})
|
|
})
|