Continue converting tests from enzyme to @testing-library/react. (#15941)
parent
9efdf87e86
commit
aff2d82bb9
@ -0,0 +1,216 @@ |
|||||||
|
// Jest Snapshot v1, https://goo.gl/fbAQLP |
||||||
|
|
||||||
|
exports[`CurrencyInput Component rendering should render properly with a fiat value 1`] = ` |
||||||
|
<div> |
||||||
|
<div |
||||||
|
class="unit-input" |
||||||
|
> |
||||||
|
<div |
||||||
|
class="unit-input__inputs" |
||||||
|
> |
||||||
|
<div |
||||||
|
class="unit-input__input-container" |
||||||
|
> |
||||||
|
<input |
||||||
|
class="unit-input__input" |
||||||
|
data-testid="currency-input" |
||||||
|
dir="ltr" |
||||||
|
placeholder="0" |
||||||
|
style="width: 1.5ch;" |
||||||
|
type="number" |
||||||
|
value="1" |
||||||
|
/> |
||||||
|
<div |
||||||
|
class="unit-input__suffix" |
||||||
|
> |
||||||
|
USD |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div |
||||||
|
class="currency-display-component currency-input__conversion-component" |
||||||
|
title="0.00432788 ETH" |
||||||
|
> |
||||||
|
<span |
||||||
|
class="currency-display-component__prefix" |
||||||
|
/> |
||||||
|
<span |
||||||
|
class="currency-display-component__text" |
||||||
|
> |
||||||
|
0.00432788 |
||||||
|
</span> |
||||||
|
<span |
||||||
|
class="currency-display-component__suffix" |
||||||
|
> |
||||||
|
ETH |
||||||
|
</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<button |
||||||
|
class="currency-input__swap-component" |
||||||
|
data-testid="currency-swap" |
||||||
|
> |
||||||
|
<i |
||||||
|
class="fa fa-retweet fa-lg" |
||||||
|
/> |
||||||
|
</button> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
`; |
||||||
|
|
||||||
|
exports[`CurrencyInput Component rendering should render properly with a native value when hideSecondary is true 1`] = ` |
||||||
|
<div> |
||||||
|
<div |
||||||
|
class="unit-input" |
||||||
|
> |
||||||
|
<div |
||||||
|
class="unit-input__inputs" |
||||||
|
> |
||||||
|
<div |
||||||
|
class="unit-input__input-container" |
||||||
|
> |
||||||
|
<input |
||||||
|
class="unit-input__input" |
||||||
|
data-testid="currency-input" |
||||||
|
dir="ltr" |
||||||
|
placeholder="0" |
||||||
|
style="width: 10ch;" |
||||||
|
type="number" |
||||||
|
value="0.00432788" |
||||||
|
/> |
||||||
|
<div |
||||||
|
class="unit-input__suffix" |
||||||
|
> |
||||||
|
ETH |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div |
||||||
|
class="currency-input__conversion-component" |
||||||
|
> |
||||||
|
No conversion rate available |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<button |
||||||
|
class="currency-input__swap-component" |
||||||
|
data-testid="currency-swap" |
||||||
|
> |
||||||
|
<i |
||||||
|
class="fa fa-retweet fa-lg" |
||||||
|
/> |
||||||
|
</button> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
`; |
||||||
|
|
||||||
|
exports[`CurrencyInput Component rendering should render properly with an ETH value 1`] = ` |
||||||
|
<div> |
||||||
|
<div |
||||||
|
class="unit-input" |
||||||
|
> |
||||||
|
<div |
||||||
|
class="unit-input__inputs" |
||||||
|
> |
||||||
|
<div |
||||||
|
class="unit-input__input-container" |
||||||
|
> |
||||||
|
<input |
||||||
|
class="unit-input__input" |
||||||
|
data-testid="currency-input" |
||||||
|
dir="ltr" |
||||||
|
placeholder="0" |
||||||
|
style="width: 1.5ch;" |
||||||
|
type="number" |
||||||
|
value="1" |
||||||
|
/> |
||||||
|
<div |
||||||
|
class="unit-input__suffix" |
||||||
|
> |
||||||
|
ETH |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div |
||||||
|
class="currency-display-component currency-input__conversion-component" |
||||||
|
title="$231.06 USD" |
||||||
|
> |
||||||
|
<span |
||||||
|
class="currency-display-component__prefix" |
||||||
|
/> |
||||||
|
<span |
||||||
|
class="currency-display-component__text" |
||||||
|
> |
||||||
|
$231.06 |
||||||
|
</span> |
||||||
|
<span |
||||||
|
class="currency-display-component__suffix" |
||||||
|
> |
||||||
|
USD |
||||||
|
</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<button |
||||||
|
class="currency-input__swap-component" |
||||||
|
data-testid="currency-swap" |
||||||
|
> |
||||||
|
<i |
||||||
|
class="fa fa-retweet fa-lg" |
||||||
|
/> |
||||||
|
</button> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
`; |
||||||
|
|
||||||
|
exports[`CurrencyInput Component rendering should render properly without a suffix 1`] = ` |
||||||
|
<div> |
||||||
|
<div |
||||||
|
class="unit-input" |
||||||
|
> |
||||||
|
<div |
||||||
|
class="unit-input__inputs" |
||||||
|
> |
||||||
|
<div |
||||||
|
class="unit-input__input-container" |
||||||
|
> |
||||||
|
<input |
||||||
|
class="unit-input__input" |
||||||
|
data-testid="currency-input" |
||||||
|
dir="ltr" |
||||||
|
placeholder="0" |
||||||
|
style="width: 1.5ch;" |
||||||
|
type="number" |
||||||
|
value="0" |
||||||
|
/> |
||||||
|
<div |
||||||
|
class="unit-input__suffix" |
||||||
|
> |
||||||
|
ETH |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div |
||||||
|
class="currency-display-component currency-input__conversion-component" |
||||||
|
title="$0.00 USD" |
||||||
|
> |
||||||
|
<span |
||||||
|
class="currency-display-component__prefix" |
||||||
|
/> |
||||||
|
<span |
||||||
|
class="currency-display-component__text" |
||||||
|
> |
||||||
|
$0.00 |
||||||
|
</span> |
||||||
|
<span |
||||||
|
class="currency-display-component__suffix" |
||||||
|
> |
||||||
|
USD |
||||||
|
</span> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<button |
||||||
|
class="currency-input__swap-component" |
||||||
|
data-testid="currency-swap" |
||||||
|
> |
||||||
|
<i |
||||||
|
class="fa fa-retweet fa-lg" |
||||||
|
/> |
||||||
|
</button> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
`; |
@ -0,0 +1,12 @@ |
|||||||
|
// Jest Snapshot v1, https://goo.gl/fbAQLP |
||||||
|
|
||||||
|
exports[`Dropdown should matchsnapshot 1`] = ` |
||||||
|
<div> |
||||||
|
<li |
||||||
|
class="dropdown-menu-item" |
||||||
|
data-testid="dropdown-menu-item" |
||||||
|
style="list-style: none; padding: 8px 0px; font-size: 18px; font-style: normal; cursor: pointer; display: flex; justify-content: flex-start; align-items: center;" |
||||||
|
tabindex="0" |
||||||
|
/> |
||||||
|
</div> |
||||||
|
`; |
@ -1,34 +1,31 @@ |
|||||||
import React from 'react'; |
import React from 'react'; |
||||||
import sinon from 'sinon'; |
import { fireEvent } from '@testing-library/react'; |
||||||
import { shallow } from 'enzyme'; |
import { renderWithProvider } from '../../../../test/lib/render-helpers'; |
||||||
import { DropdownMenuItem } from './dropdown'; |
import { DropdownMenuItem } from './dropdown'; |
||||||
|
|
||||||
describe('Dropdown', () => { |
describe('Dropdown', () => { |
||||||
let wrapper; |
const props = { |
||||||
const onClickSpy = sinon.spy(); |
onClick: jest.fn(), |
||||||
const closeMenuSpy = sinon.spy(); |
closeMenu: jest.fn(), |
||||||
|
style: { test: 'style' }, |
||||||
|
}; |
||||||
|
|
||||||
beforeEach(() => { |
it('should matchsnapshot', () => { |
||||||
wrapper = shallow( |
const { container } = renderWithProvider(<DropdownMenuItem {...props} />); |
||||||
<DropdownMenuItem |
|
||||||
onClick={onClickSpy} |
|
||||||
style={{ test: 'style' }} |
|
||||||
closeMenu={closeMenuSpy} |
|
||||||
/>, |
|
||||||
); |
|
||||||
}); |
|
||||||
|
|
||||||
it('renders li with dropdown-menu-item class', () => { |
|
||||||
expect(wrapper.find('li.dropdown-menu-item')).toHaveLength(1); |
|
||||||
}); |
|
||||||
|
|
||||||
it('adds style based on props passed', () => { |
expect(container).toMatchSnapshot(); |
||||||
expect(wrapper.prop('style').test).toStrictEqual('style'); |
|
||||||
}); |
}); |
||||||
|
|
||||||
it('simulates click event and calls onClick and closeMenu', () => { |
it('simulates click event and calls onClick and closeMenu', () => { |
||||||
wrapper.prop('onClick')(); |
const { queryByTestId } = renderWithProvider( |
||||||
expect(onClickSpy.callCount).toStrictEqual(1); |
<DropdownMenuItem {...props} />, |
||||||
expect(closeMenuSpy.callCount).toStrictEqual(1); |
); |
||||||
|
|
||||||
|
const dropdownItem = queryByTestId('dropdown-menu-item'); |
||||||
|
|
||||||
|
fireEvent.click(dropdownItem); |
||||||
|
|
||||||
|
expect(props.onClick).toHaveBeenCalledTimes(1); |
||||||
|
expect(props.closeMenu).toHaveBeenCalledTimes(1); |
||||||
}); |
}); |
||||||
}); |
}); |
||||||
|
@ -0,0 +1,24 @@ |
|||||||
|
// Jest Snapshot v1, https://goo.gl/fbAQLP |
||||||
|
|
||||||
|
exports[`InfoBox should match snapshot 1`] = ` |
||||||
|
<div> |
||||||
|
<div |
||||||
|
class="info-box" |
||||||
|
> |
||||||
|
<div |
||||||
|
class="info-box__close" |
||||||
|
data-testid="info-box-close" |
||||||
|
/> |
||||||
|
<div |
||||||
|
class="info-box__title" |
||||||
|
> |
||||||
|
Title |
||||||
|
</div> |
||||||
|
<div |
||||||
|
class="info-box__description" |
||||||
|
> |
||||||
|
Description |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
`; |
@ -1,35 +1,26 @@ |
|||||||
import React from 'react'; |
import React from 'react'; |
||||||
import sinon from 'sinon'; |
import { fireEvent } from '@testing-library/react'; |
||||||
import { shallow } from 'enzyme'; |
import { renderWithProvider } from '../../../../test/lib/render-helpers'; |
||||||
|
|
||||||
import InfoBox from './info-box.component'; |
import InfoBox from './info-box.component'; |
||||||
|
|
||||||
describe('InfoBox', () => { |
describe('InfoBox', () => { |
||||||
let wrapper; |
|
||||||
|
|
||||||
const props = { |
const props = { |
||||||
title: 'Title', |
title: 'Title', |
||||||
description: 'Description', |
description: 'Description', |
||||||
onClose: sinon.spy(), |
onClose: jest.fn(), |
||||||
}; |
}; |
||||||
|
|
||||||
beforeEach(() => { |
it('should match snapshot', () => { |
||||||
wrapper = shallow(<InfoBox {...props} />); |
const { container } = renderWithProvider(<InfoBox {...props} />); |
||||||
}); |
expect(container).toMatchSnapshot(); |
||||||
|
|
||||||
it('renders title from props', () => { |
|
||||||
const title = wrapper.find('.info-box__title'); |
|
||||||
expect(title.text()).toStrictEqual(props.title); |
|
||||||
}); |
}); |
||||||
|
|
||||||
it('renders description from props', () => { |
it('should call handleClose on info close element', () => { |
||||||
const description = wrapper.find('.info-box__description'); |
const { queryByTestId } = renderWithProvider(<InfoBox {...props} />); |
||||||
expect(description.text()).toStrictEqual(props.description); |
const infoBoxClose = queryByTestId('info-box-close'); |
||||||
}); |
|
||||||
|
|
||||||
it('closes info box', () => { |
fireEvent.click(infoBoxClose); |
||||||
const close = wrapper.find('.info-box__close'); |
expect(props.onClose).toHaveBeenCalled(); |
||||||
close.simulate('click'); |
|
||||||
expect(props.onClose.calledOnce).toStrictEqual(true); |
|
||||||
}); |
}); |
||||||
}); |
}); |
||||||
|
@ -0,0 +1,157 @@ |
|||||||
|
// Jest Snapshot v1, https://goo.gl/fbAQLP |
||||||
|
|
||||||
|
exports[`Modal Component should render a modal with a cancel and a submit button 1`] = ` |
||||||
|
<div> |
||||||
|
<div |
||||||
|
class="modal-container" |
||||||
|
> |
||||||
|
<div |
||||||
|
class="modal-container__content" |
||||||
|
/> |
||||||
|
<div |
||||||
|
class="modal-container__footer" |
||||||
|
> |
||||||
|
<button |
||||||
|
class="button btn--rounded btn-secondary modal-container__footer-button" |
||||||
|
role="button" |
||||||
|
tabindex="0" |
||||||
|
> |
||||||
|
Cancel |
||||||
|
</button> |
||||||
|
<button |
||||||
|
class="button btn--rounded btn-primary modal-container__footer-button" |
||||||
|
role="button" |
||||||
|
tabindex="0" |
||||||
|
> |
||||||
|
Submit |
||||||
|
</button> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
`; |
||||||
|
|
||||||
|
exports[`Modal Component should render a modal with a header 1`] = ` |
||||||
|
<div> |
||||||
|
<div |
||||||
|
class="modal-container" |
||||||
|
> |
||||||
|
<div |
||||||
|
class="modal-container__header" |
||||||
|
> |
||||||
|
<div |
||||||
|
class="modal-container__header-text" |
||||||
|
> |
||||||
|
My Header |
||||||
|
</div> |
||||||
|
<div |
||||||
|
class="modal-container__header-close" |
||||||
|
data-testid="modal-header-close" |
||||||
|
/> |
||||||
|
</div> |
||||||
|
<div |
||||||
|
class="modal-container__content" |
||||||
|
/> |
||||||
|
<div |
||||||
|
class="modal-container__footer" |
||||||
|
> |
||||||
|
<button |
||||||
|
class="button btn--rounded btn-secondary modal-container__footer-button" |
||||||
|
role="button" |
||||||
|
tabindex="0" |
||||||
|
> |
||||||
|
Cancel |
||||||
|
</button> |
||||||
|
<button |
||||||
|
class="button btn--rounded btn-primary modal-container__footer-button" |
||||||
|
role="button" |
||||||
|
tabindex="0" |
||||||
|
> |
||||||
|
Submit |
||||||
|
</button> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
`; |
||||||
|
|
||||||
|
exports[`Modal Component should render a modal with a submit button 1`] = ` |
||||||
|
<div> |
||||||
|
<div |
||||||
|
class="modal-container" |
||||||
|
> |
||||||
|
<div |
||||||
|
class="modal-container__content" |
||||||
|
/> |
||||||
|
<div |
||||||
|
class="modal-container__footer" |
||||||
|
> |
||||||
|
<button |
||||||
|
class="button btn--rounded btn-primary modal-container__footer-button" |
||||||
|
/> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
`; |
||||||
|
|
||||||
|
exports[`Modal Component should render a modal with children 1`] = ` |
||||||
|
<div> |
||||||
|
<div |
||||||
|
class="modal-container" |
||||||
|
> |
||||||
|
<div |
||||||
|
class="modal-container__content" |
||||||
|
> |
||||||
|
<div |
||||||
|
class="test-child" |
||||||
|
/> |
||||||
|
</div> |
||||||
|
<div |
||||||
|
class="modal-container__footer" |
||||||
|
> |
||||||
|
<button |
||||||
|
class="button btn--rounded btn-secondary modal-container__footer-button" |
||||||
|
role="button" |
||||||
|
tabindex="0" |
||||||
|
> |
||||||
|
Cancel |
||||||
|
</button> |
||||||
|
<button |
||||||
|
class="button btn--rounded btn-primary modal-container__footer-button" |
||||||
|
role="button" |
||||||
|
tabindex="0" |
||||||
|
> |
||||||
|
Submit |
||||||
|
</button> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
`; |
||||||
|
|
||||||
|
exports[`Modal Component should render a modal with different button types 1`] = ` |
||||||
|
<div> |
||||||
|
<div |
||||||
|
class="modal-container" |
||||||
|
> |
||||||
|
<div |
||||||
|
class="modal-container__content" |
||||||
|
/> |
||||||
|
<div |
||||||
|
class="modal-container__footer" |
||||||
|
> |
||||||
|
<button |
||||||
|
class="button btn--rounded btn-default modal-container__footer-button" |
||||||
|
role="button" |
||||||
|
tabindex="0" |
||||||
|
> |
||||||
|
Cancel |
||||||
|
</button> |
||||||
|
<button |
||||||
|
class="button btn--rounded btn-default modal-container__footer-button" |
||||||
|
role="button" |
||||||
|
tabindex="0" |
||||||
|
> |
||||||
|
Submit |
||||||
|
</button> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
`; |
@ -0,0 +1,20 @@ |
|||||||
|
// Jest Snapshot v1, https://goo.gl/fbAQLP |
||||||
|
|
||||||
|
exports[`ModalContent Component should match snapshot 1`] = ` |
||||||
|
<div> |
||||||
|
<div |
||||||
|
class="modal-content" |
||||||
|
> |
||||||
|
<div |
||||||
|
class="modal-content__title" |
||||||
|
> |
||||||
|
Modal Title |
||||||
|
</div> |
||||||
|
<div |
||||||
|
class="modal-content__description" |
||||||
|
> |
||||||
|
Modal Description |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
`; |
@ -1,40 +1,15 @@ |
|||||||
import React from 'react'; |
import React from 'react'; |
||||||
import { shallow } from 'enzyme'; |
import { renderWithProvider } from '../../../../../test/lib/render-helpers'; |
||||||
import ModalContent from './modal-content.component'; |
import ModalContent from '.'; |
||||||
|
|
||||||
describe('ModalContent Component', () => { |
describe('ModalContent Component', () => { |
||||||
it('should render a title', () => { |
const props = { |
||||||
const wrapper = shallow(<ModalContent title="Modal Title" />); |
title: 'Modal Title', |
||||||
|
description: 'Modal Description', |
||||||
expect(wrapper.find('.modal-content__title')).toHaveLength(1); |
}; |
||||||
expect(wrapper.find('.modal-content__title').text()).toStrictEqual( |
it('should match snapshot', () => { |
||||||
'Modal Title', |
const { container } = renderWithProvider(<ModalContent {...props} />); |
||||||
); |
|
||||||
expect(wrapper.find('.modal-content__description')).toHaveLength(0); |
expect(container).toMatchSnapshot(); |
||||||
}); |
|
||||||
|
|
||||||
it('should render a description', () => { |
|
||||||
const wrapper = shallow(<ModalContent description="Modal Description" />); |
|
||||||
|
|
||||||
expect(wrapper.find('.modal-content__title')).toHaveLength(0); |
|
||||||
expect(wrapper.find('.modal-content__description')).toHaveLength(1); |
|
||||||
expect(wrapper.find('.modal-content__description').text()).toStrictEqual( |
|
||||||
'Modal Description', |
|
||||||
); |
|
||||||
}); |
|
||||||
|
|
||||||
it('should render both a title and a description', () => { |
|
||||||
const wrapper = shallow( |
|
||||||
<ModalContent title="Modal Title" description="Modal Description" />, |
|
||||||
); |
|
||||||
|
|
||||||
expect(wrapper.find('.modal-content__title')).toHaveLength(1); |
|
||||||
expect(wrapper.find('.modal-content__title').text()).toStrictEqual( |
|
||||||
'Modal Title', |
|
||||||
); |
|
||||||
expect(wrapper.find('.modal-content__description')).toHaveLength(1); |
|
||||||
expect(wrapper.find('.modal-content__description').text()).toStrictEqual( |
|
||||||
'Modal Description', |
|
||||||
); |
|
||||||
}); |
}); |
||||||
}); |
}); |
||||||
|
@ -1,133 +1,103 @@ |
|||||||
import React from 'react'; |
import React from 'react'; |
||||||
import { mount, shallow } from 'enzyme'; |
import { fireEvent } from '@testing-library/react'; |
||||||
import sinon from 'sinon'; |
import { renderWithProvider } from '../../../../test/lib/render-helpers'; |
||||||
import Button from '../../ui/button'; |
|
||||||
import Modal from './modal.component'; |
import Modal from './modal.component'; |
||||||
|
|
||||||
describe('Modal Component', () => { |
describe('Modal Component', () => { |
||||||
it('should render a modal with a submit button', () => { |
it('should render a modal with a submit button', () => { |
||||||
const wrapper = shallow(<Modal />); |
const { container } = renderWithProvider(<Modal />); |
||||||
|
|
||||||
expect(wrapper.find('.modal-container')).toHaveLength(1); |
expect(container).toMatchSnapshot(); |
||||||
const buttons = wrapper.find(Button); |
|
||||||
expect(buttons).toHaveLength(1); |
|
||||||
expect(buttons.at(0).props().type).toStrictEqual('primary'); |
|
||||||
}); |
}); |
||||||
|
|
||||||
it('should render a modal with a cancel and a submit button', () => { |
it('should render a modal with a cancel and a submit button', () => { |
||||||
const handleCancel = sinon.spy(); |
const props = { |
||||||
const handleSubmit = sinon.spy(); |
onCancel: jest.fn(), |
||||||
const wrapper = shallow( |
cancelText: 'Cancel', |
||||||
<Modal |
onSubmit: jest.fn(), |
||||||
onCancel={handleCancel} |
submitText: 'Submit', |
||||||
cancelText="Cancel" |
}; |
||||||
onSubmit={handleSubmit} |
const { container, queryByText } = renderWithProvider(<Modal {...props} />); |
||||||
submitText="Submit" |
expect(container).toMatchSnapshot(); |
||||||
/>, |
|
||||||
); |
const cancelButton = queryByText(props.cancelText); |
||||||
|
const submitButton = queryByText(props.submitText); |
||||||
|
|
||||||
|
expect(props.onCancel).not.toHaveBeenCalled(); |
||||||
|
fireEvent.click(cancelButton); |
||||||
|
expect(props.onCancel).toHaveBeenCalled(); |
||||||
|
|
||||||
const buttons = wrapper.find(Button); |
expect(props.onSubmit).not.toHaveBeenCalled(); |
||||||
expect(buttons).toHaveLength(2); |
fireEvent.click(submitButton); |
||||||
const cancelButton = buttons.at(0); |
expect(props.onSubmit).toHaveBeenCalled(); |
||||||
const submitButton = buttons.at(1); |
|
||||||
|
|
||||||
expect(cancelButton.props().type).toStrictEqual('secondary'); |
|
||||||
expect(cancelButton.props().children).toStrictEqual('Cancel'); |
|
||||||
expect(handleCancel.callCount).toStrictEqual(0); |
|
||||||
cancelButton.simulate('click'); |
|
||||||
expect(handleCancel.callCount).toStrictEqual(1); |
|
||||||
|
|
||||||
expect(submitButton.props().type).toStrictEqual('primary'); |
|
||||||
expect(submitButton.props().children).toStrictEqual('Submit'); |
|
||||||
expect(handleSubmit.callCount).toStrictEqual(0); |
|
||||||
submitButton.simulate('click'); |
|
||||||
expect(handleSubmit.callCount).toStrictEqual(1); |
|
||||||
}); |
}); |
||||||
|
|
||||||
it('should render a modal with different button types', () => { |
it('should render a modal with different button types', () => { |
||||||
const wrapper = shallow( |
const props = { |
||||||
<Modal |
onCancel: () => undefined, |
||||||
onCancel={() => undefined} |
cancelText: 'Cancel', |
||||||
cancelText="Cancel" |
cancelType: 'default', |
||||||
cancelType="default" |
onSubmit: () => undefined, |
||||||
onSubmit={() => undefined} |
submitText: 'Submit', |
||||||
submitText="Submit" |
submitType: 'confirm', |
||||||
submitType="confirm" |
}; |
||||||
/>, |
|
||||||
); |
const { container } = renderWithProvider(<Modal {...props} />); |
||||||
|
|
||||||
const buttons = wrapper.find(Button); |
expect(container).toMatchSnapshot(); |
||||||
expect(buttons).toHaveLength(2); |
|
||||||
expect(buttons.at(0).props().type).toStrictEqual('default'); |
|
||||||
expect(buttons.at(1).props().type).toStrictEqual('confirm'); |
|
||||||
}); |
}); |
||||||
|
|
||||||
it('should render a modal with children', () => { |
it('should render a modal with children', () => { |
||||||
const wrapper = shallow( |
const props = { |
||||||
<Modal |
onCancel: () => undefined, |
||||||
onCancel={() => undefined} |
cancelText: 'Cancel', |
||||||
cancelText="Cancel" |
onSubmit: () => undefined, |
||||||
onSubmit={() => undefined} |
submitText: 'Submit', |
||||||
submitText="Submit" |
}; |
||||||
> |
const { container } = renderWithProvider( |
||||||
|
<Modal {...props}> |
||||||
<div className="test-child" /> |
<div className="test-child" /> |
||||||
</Modal>, |
</Modal>, |
||||||
); |
); |
||||||
expect(wrapper.find('.test-child')).toHaveLength(1); |
expect(container).toMatchSnapshot(); |
||||||
}); |
}); |
||||||
|
|
||||||
it('should render a modal with a header', () => { |
it('should render a modal with a header', () => { |
||||||
const handleCancel = sinon.spy(); |
const props = { |
||||||
const handleSubmit = sinon.spy(); |
onCancel: jest.fn(), |
||||||
const wrapper = shallow( |
cancelText: 'Cancel', |
||||||
<Modal |
onSubmit: jest.fn(), |
||||||
onCancel={handleCancel} |
submitText: 'Submit', |
||||||
cancelText="Cancel" |
headerText: 'My Header', |
||||||
onSubmit={handleSubmit} |
onClose: jest.fn(), |
||||||
submitText="Submit" |
}; |
||||||
headerText="My Header" |
|
||||||
onClose={handleCancel} |
|
||||||
/>, |
|
||||||
); |
|
||||||
|
|
||||||
expect(wrapper.find('.modal-container__header')).toHaveLength(1); |
const { container, queryByTestId } = renderWithProvider( |
||||||
expect(wrapper.find('.modal-container__header-text').text()).toStrictEqual( |
<Modal {...props} />, |
||||||
'My Header', |
|
||||||
); |
); |
||||||
expect(handleCancel.callCount).toStrictEqual(0); |
expect(container).toMatchSnapshot(); |
||||||
expect(handleSubmit.callCount).toStrictEqual(0); |
|
||||||
wrapper.find('.modal-container__header-close').simulate('click'); |
const modalClose = queryByTestId('modal-header-close'); |
||||||
expect(handleCancel.callCount).toStrictEqual(1); |
fireEvent.click(modalClose); |
||||||
expect(handleSubmit.callCount).toStrictEqual(0); |
expect(props.onClose).toHaveBeenCalled(); |
||||||
}); |
}); |
||||||
|
|
||||||
it('should disable the submit button if submitDisabled is true', () => { |
it('should disable the submit button if submitDisabled is true', () => { |
||||||
const handleCancel = sinon.spy(); |
const props = { |
||||||
const handleSubmit = sinon.spy(); |
onCancel: jest.fn(), |
||||||
const wrapper = mount( |
cancelText: 'Cancel', |
||||||
<Modal |
onSubmit: jest.fn(), |
||||||
onCancel={handleCancel} |
submitText: 'Submit', |
||||||
cancelText="Cancel" |
submitDisabled: true, |
||||||
onSubmit={handleSubmit} |
headerText: 'My Header', |
||||||
submitText="Submit" |
onClose: jest.fn(), |
||||||
submitDisabled |
}; |
||||||
headerText="My Header" |
const { queryByText } = renderWithProvider(<Modal {...props} />); |
||||||
onClose={handleCancel} |
const submitButton = queryByText(props.submitText); |
||||||
/>, |
|
||||||
); |
|
||||||
|
|
||||||
const buttons = wrapper.find(Button); |
|
||||||
expect(buttons).toHaveLength(2); |
|
||||||
const cancelButton = buttons.at(0); |
|
||||||
const submitButton = buttons.at(1); |
|
||||||
|
|
||||||
expect(handleCancel.callCount).toStrictEqual(0); |
expect(submitButton).toHaveAttribute('disabled'); |
||||||
cancelButton.simulate('click'); |
|
||||||
expect(handleCancel.callCount).toStrictEqual(1); |
|
||||||
|
|
||||||
expect(submitButton.props().disabled).toStrictEqual(true); |
fireEvent.click(submitButton); |
||||||
expect(handleSubmit.callCount).toStrictEqual(0); |
expect(props.onSubmit).not.toHaveBeenCalled(); |
||||||
submitButton.simulate('click'); |
|
||||||
expect(handleSubmit.callCount).toStrictEqual(0); |
|
||||||
}); |
}); |
||||||
}); |
}); |
||||||
|
Loading…
Reference in new issue