import React from 'react'; import ReactTestRenderer from 'react-test-renderer'; import Adapter from 'enzyme-adapter-react-16/build/index'; import Enzyme, { mount } from 'enzyme/build/index'; import { Modal } from 'app/shared/components/modal/modal'; import { ConsoleMock } from 'app/testUtils/consoleMock'; describe('Modal tests', () => { Enzyme.configure({ adapter: new Adapter() }); const content = 'content'; const openedSelector = '.c-modal--opened'; const closeButtonSelector = '.c-modal__close'; let consoleMock; beforeEach(() => { consoleMock = new ConsoleMock(); }); afterEach(() => { consoleMock.destroy(); }); it('renders correctly', () => { const tree = ReactTestRenderer .create() .toJSON(); expect(tree).toMatchSnapshot(); expect(console.error).not.toBeCalled(); }); it('renders correctly with content', () => { const tree = ReactTestRenderer .create( {content} ) .toJSON(); expect(tree).toMatchSnapshot(); expect(console.error).not.toBeCalled(); }); it('renders correctly centered', () => { const tree = ReactTestRenderer .create( {content} ) .toJSON(); expect(tree).toMatchSnapshot(); expect(console.error).not.toBeCalled(); }); it('is closed by default', () => { const component = mount( {content} ); expect(component.find(openedSelector).exists()).toEqual(false); expect(console.error).not.toBeCalled(); }); it('fires onClose when close button is clicked', () => { const onClose = jest.fn(); const component = mount( {content} ); component.find(closeButtonSelector).simulate('click'); expect(onClose).toBeCalled(); expect(console.error).not.toBeCalled(); }); it('fires onOverlay when overlay is clicked', () => { const onOverlay = jest.fn(); const component = mount( {content} ); component.find('.js-overlay-hit-area').simulate('click'); expect(onOverlay).toBeCalled(); expect(console.error).not.toBeCalled(); }); });