import Adapter from 'enzyme-adapter-react-16'; import React, { useState as useStateMock } from 'react'; import ReactTestRenderer from 'react-test-renderer'; import Enzyme, { mount } from 'enzyme'; import ContactPanel from 'app/modules/contact/components/contactPanel/contactPanel'; import { createContact } from 'app/testUtils/mocks/contact.mock'; jest.mock('react', () => ({ ...jest.requireActual('react'), useState: jest.fn(), })); describe('ContactPanel component tests', () => { beforeEach(() => { // @ts-ignore useStateMock.mockImplementation(init => [ init, setState ]); }); Enzyme.configure({ adapter: new Adapter() }); const setState = jest.fn(); const contact = createContact('test'); const hitAreaSelector = '.js-hit-area'; it('renders correctly', () => { const tree = ReactTestRenderer .create() .toJSON(); expect(tree).toMatchSnapshot(); }); it('on mouser over sets popup visible to true', () => { const component = mount(); component.find(hitAreaSelector).simulate('mouseOver'); expect(setState).toBeCalledWith(true); }); it('on mouser leave sets popup visible to false', () => { const component = mount(); component.find(hitAreaSelector).simulate('mouseOver'); component.find(hitAreaSelector).simulate('mouseOut'); expect(setState).toBeCalledWith(false); }); });