parent
77e8eac4b3
commit
2cfdc95eeb
@ -0,0 +1,36 @@ |
||||
import React from 'react' |
||||
import assert from 'assert' |
||||
import { shallow } from 'enzyme' |
||||
import ErrorMessage from '../error-message.component' |
||||
|
||||
describe('ErrorMessage Component', () => { |
||||
const t = key => `translate ${key}` |
||||
|
||||
it('should render a message from props.errorMessage', () => { |
||||
const wrapper = shallow( |
||||
<ErrorMessage |
||||
errorMessage="This is an error." |
||||
/>, |
||||
{ context: { t }} |
||||
) |
||||
|
||||
assert.ok(wrapper) |
||||
assert.equal(wrapper.find('.error-message').length, 1) |
||||
assert.equal(wrapper.find('.error-message__icon').length, 1) |
||||
assert.equal(wrapper.find('.error-message__text').text(), 'ALERT: This is an error.') |
||||
}) |
||||
|
||||
it('should render a message translated from props.errorKey', () => { |
||||
const wrapper = shallow( |
||||
<ErrorMessage |
||||
errorKey="testKey" |
||||
/>, |
||||
{ context: { t }} |
||||
) |
||||
|
||||
assert.ok(wrapper) |
||||
assert.equal(wrapper.find('.error-message').length, 1) |
||||
assert.equal(wrapper.find('.error-message__icon').length, 1) |
||||
assert.equal(wrapper.find('.error-message__text').text(), 'ALERT: translate testKey') |
||||
}) |
||||
}) |
@ -0,0 +1,44 @@ |
||||
import React from 'react' |
||||
import assert from 'assert' |
||||
import { shallow } from 'enzyme' |
||||
import ModalContent from '../modal-content.component' |
||||
|
||||
describe('ModalContent Component', () => { |
||||
it('should render a title', () => { |
||||
const wrapper = shallow( |
||||
<ModalContent |
||||
title="Modal Title" |
||||
/> |
||||
) |
||||
|
||||
assert.equal(wrapper.find('.modal-content__title').length, 1) |
||||
assert.equal(wrapper.find('.modal-content__title').text(), 'Modal Title') |
||||
assert.equal(wrapper.find('.modal-content__description').length, 0) |
||||
}) |
||||
|
||||
it('should render a description', () => { |
||||
const wrapper = shallow( |
||||
<ModalContent |
||||
description="Modal Description" |
||||
/> |
||||
) |
||||
|
||||
assert.equal(wrapper.find('.modal-content__title').length, 0) |
||||
assert.equal(wrapper.find('.modal-content__description').length, 1) |
||||
assert.equal(wrapper.find('.modal-content__description').text(), 'Modal Description') |
||||
}) |
||||
|
||||
it('should render both a title and a description', () => { |
||||
const wrapper = shallow( |
||||
<ModalContent |
||||
title="Modal Title" |
||||
description="Modal Description" |
||||
/> |
||||
) |
||||
|
||||
assert.equal(wrapper.find('.modal-content__title').length, 1) |
||||
assert.equal(wrapper.find('.modal-content__title').text(), 'Modal Title') |
||||
assert.equal(wrapper.find('.modal-content__description').length, 1) |
||||
assert.equal(wrapper.find('.modal-content__description').text(), 'Modal Description') |
||||
}) |
||||
}) |
@ -0,0 +1,117 @@ |
||||
import React from 'react' |
||||
import assert from 'assert' |
||||
import { shallow } from 'enzyme' |
||||
import sinon from 'sinon' |
||||
import Modal from '../modal.component' |
||||
import Button from '../../button' |
||||
|
||||
describe('Modal Component', () => { |
||||
it('should render a modal with a submit button', () => { |
||||
const wrapper = shallow(<Modal />) |
||||
|
||||
assert.equal(wrapper.find('.modal-container').length, 1) |
||||
const buttons = wrapper.find(Button) |
||||
assert.equal(buttons.length, 1) |
||||
assert.equal(buttons.at(0).props().type, 'primary') |
||||
}) |
||||
|
||||
it('should render a modal with a cancel and a submit button', () => { |
||||
const handleCancel = sinon.spy() |
||||
const handleSubmit = sinon.spy() |
||||
const wrapper = shallow( |
||||
<Modal |
||||
onCancel={handleCancel} |
||||
cancelText="Cancel" |
||||
onSubmit={handleSubmit} |
||||
submitText="Submit" |
||||
/> |
||||
) |
||||
|
||||
const buttons = wrapper.find(Button) |
||||
assert.equal(buttons.length, 2) |
||||
const cancelButton = buttons.at(0) |
||||
const submitButton = buttons.at(1) |
||||
|
||||
assert.equal(cancelButton.props().type, 'default') |
||||
assert.equal(cancelButton.props().children, 'Cancel') |
||||
assert.equal(handleCancel.callCount, 0) |
||||
cancelButton.simulate('click') |
||||
assert.equal(handleCancel.callCount, 1) |
||||
|
||||
assert.equal(submitButton.props().type, 'primary') |
||||
assert.equal(submitButton.props().children, 'Submit') |
||||
assert.equal(handleSubmit.callCount, 0) |
||||
submitButton.simulate('click') |
||||
assert.equal(handleSubmit.callCount, 1) |
||||
}) |
||||
|
||||
it('should render a modal with different button types', () => { |
||||
const wrapper = shallow( |
||||
<Modal |
||||
onCancel={() => {}} |
||||
cancelText="Cancel" |
||||
cancelType="secondary" |
||||
onSubmit={() => {}} |
||||
submitText="Submit" |
||||
submitType="confirm" |
||||
/> |
||||
) |
||||
|
||||
const buttons = wrapper.find(Button) |
||||
assert.equal(buttons.length, 2) |
||||
assert.equal(buttons.at(0).props().type, 'secondary') |
||||
assert.equal(buttons.at(1).props().type, 'confirm') |
||||
}) |
||||
|
||||
it('should render a modal with children', () => { |
||||
const wrapper = shallow( |
||||
<Modal |
||||
onCancel={() => {}} |
||||
cancelText="Cancel" |
||||
onSubmit={() => {}} |
||||
submitText="Submit" |
||||
> |
||||
<div className="test-child" /> |
||||
</Modal> |
||||
) |
||||
|
||||
assert.ok(wrapper.find('.test-class')) |
||||
}) |
||||
|
||||
it('should render a modal with a header', () => { |
||||
const handleCancel = sinon.spy() |
||||
const handleSubmit = sinon.spy() |
||||
const wrapper = shallow( |
||||
<Modal |
||||
onCancel={handleCancel} |
||||
cancelText="Cancel" |
||||
onSubmit={handleSubmit} |
||||
submitText="Submit" |
||||
headerText="My Header" |
||||
/> |
||||
) |
||||
|
||||
assert.ok(wrapper.find('.modal-container__header')) |
||||
assert.equal(wrapper.find('.modal-container__header-text').text(), 'My Header') |
||||
assert.equal(handleCancel.callCount, 0) |
||||
assert.equal(handleSubmit.callCount, 0) |
||||
wrapper.find('.modal-container__header-close').simulate('click') |
||||
assert.equal(handleCancel.callCount, 1) |
||||
assert.equal(handleSubmit.callCount, 0) |
||||
}) |
||||
|
||||
it('should call onSubmit when onCancel is undefined and the header close button is clicked', () => { |
||||
const handleSubmit = sinon.spy() |
||||
const wrapper = shallow( |
||||
<Modal |
||||
onSubmit={handleSubmit} |
||||
submitText="Submit" |
||||
headerText="My Header" |
||||
/> |
||||
) |
||||
|
||||
assert.equal(handleSubmit.callCount, 0) |
||||
wrapper.find('.modal-container__header-close').simulate('click') |
||||
assert.equal(handleSubmit.callCount, 1) |
||||
}) |
||||
}) |
@ -0,0 +1,27 @@ |
||||
import React from 'react' |
||||
import assert from 'assert' |
||||
import { shallow } from 'enzyme' |
||||
import CancelTransactionGasFee from '../cancel-transaction-gas-fee.component' |
||||
import CurrencyDisplay from '../../../../currency-display' |
||||
|
||||
describe('CancelTransactionGasFee Component', () => { |
||||
it('should render', () => { |
||||
const wrapper = shallow( |
||||
<CancelTransactionGasFee |
||||
value="0x3b9aca00" |
||||
/> |
||||
) |
||||
|
||||
assert.ok(wrapper) |
||||
assert.equal(wrapper.find(CurrencyDisplay).length, 2) |
||||
const ethDisplay = wrapper.find(CurrencyDisplay).at(0) |
||||
const fiatDisplay = wrapper.find(CurrencyDisplay).at(1) |
||||
|
||||
assert.equal(ethDisplay.props().value, '0x3b9aca00') |
||||
assert.equal(ethDisplay.props().currency, 'ETH') |
||||
assert.equal(ethDisplay.props().className, 'cancel-transaction-gas-fee__eth') |
||||
|
||||
assert.equal(fiatDisplay.props().value, '0x3b9aca00') |
||||
assert.equal(fiatDisplay.props().className, 'cancel-transaction-gas-fee__fiat') |
||||
}) |
||||
}) |
@ -0,0 +1,56 @@ |
||||
import React from 'react' |
||||
import assert from 'assert' |
||||
import { shallow } from 'enzyme' |
||||
import sinon from 'sinon' |
||||
import CancelTransaction from '../cancel-transaction.component' |
||||
import CancelTransactionGasFee from '../cancel-transaction-gas-fee' |
||||
import Modal from '../../../modal' |
||||
|
||||
describe('CancelTransaction Component', () => { |
||||
const t = key => key |
||||
|
||||
it('should render a CancelTransaction modal', () => { |
||||
const wrapper = shallow( |
||||
<CancelTransaction |
||||
defaultNewGasPrice="0x3b9aca00" |
||||
/>, |
||||
{ context: { t }} |
||||
) |
||||
|
||||
assert.ok(wrapper) |
||||
assert.equal(wrapper.find(Modal).length, 1) |
||||
assert.equal(wrapper.find(CancelTransactionGasFee).length, 1) |
||||
assert.equal(wrapper.find(CancelTransactionGasFee).props().value, '0x1319718a5000') |
||||
assert.equal(wrapper.find('.cancel-transaction__title').text(), 'cancellationGasFee') |
||||
assert.equal(wrapper.find('.cancel-transaction__description').text(), 'attemptToCancelDescription') |
||||
}) |
||||
|
||||
it('should pass the correct props to the Modal component', async () => { |
||||
const createCancelTransactionSpy = sinon.stub().callsFake(() => Promise.resolve()) |
||||
const hideModalSpy = sinon.spy() |
||||
|
||||
const wrapper = shallow( |
||||
<CancelTransaction |
||||
defaultNewGasPrice="0x3b9aca00" |
||||
createCancelTransaction={createCancelTransactionSpy} |
||||
hideModal={hideModalSpy} |
||||
/>, |
||||
{ context: { t }} |
||||
) |
||||
|
||||
assert.equal(wrapper.find(Modal).length, 1) |
||||
const modalProps = wrapper.find(Modal).props() |
||||
|
||||
assert.equal(modalProps.headerText, 'attemptToCancel') |
||||
assert.equal(modalProps.submitText, 'yesLetsTry') |
||||
assert.equal(modalProps.cancelText, 'nevermind') |
||||
|
||||
assert.equal(createCancelTransactionSpy.callCount, 0) |
||||
assert.equal(hideModalSpy.callCount, 0) |
||||
await modalProps.onSubmit() |
||||
assert.equal(createCancelTransactionSpy.callCount, 1) |
||||
assert.equal(hideModalSpy.callCount, 1) |
||||
modalProps.onCancel() |
||||
assert.equal(hideModalSpy.callCount, 2) |
||||
}) |
||||
}) |
@ -0,0 +1,43 @@ |
||||
|
||||
import assert from 'assert' |
||||
import configureMockStore from 'redux-mock-store' |
||||
import { mount } from 'enzyme' |
||||
import React from 'react' |
||||
import withModalProps from '../with-modal-props' |
||||
|
||||
const mockState = { |
||||
appState: { |
||||
modal: { |
||||
modalState: { |
||||
props: { |
||||
prop1: 'prop1', |
||||
prop2: 2, |
||||
prop3: true, |
||||
}, |
||||
}, |
||||
}, |
||||
}, |
||||
} |
||||
|
||||
describe('withModalProps', () => { |
||||
it('should return a component wrapped with modal state props', () => { |
||||
const TestComponent = props => ( |
||||
<div className="test">Testing</div> |
||||
) |
||||
const WrappedComponent = withModalProps(TestComponent) |
||||
const store = configureMockStore()(mockState) |
||||
const wrapper = mount( |
||||
<WrappedComponent store={store} /> |
||||
) |
||||
|
||||
assert.ok(wrapper) |
||||
const testComponent = wrapper.find(TestComponent).at(0) |
||||
assert.equal(testComponent.length, 1) |
||||
assert.equal(testComponent.find('.test').text(), 'Testing') |
||||
const testComponentProps = testComponent.props() |
||||
assert.equal(testComponentProps.prop1, 'prop1') |
||||
assert.equal(testComponentProps.prop2, 2) |
||||
assert.equal(testComponentProps.prop3, true) |
||||
assert.equal(typeof testComponentProps.hideModal, 'function') |
||||
}) |
||||
}) |
Loading…
Reference in new issue