import React from 'react'; import { act, fireEvent, render } from '@testing-library/react'; import 'jest-styled-components'; import { Data } from '../../Data'; import { DataFilters } from '../../DataFilters'; import { Grommet } from '../../Grommet'; import { DataSearch } from '..'; import { createPortal, expectPortal } from '../../../utils/portal'; const data = [{ name: 'a' }, { name: 'b' }]; describe('DataSearch', () => { window.scrollTo = jest.fn(); beforeEach(createPortal); test('renders', () => { const { container } = render( , ); expect(container.firstChild).toMatchSnapshot(); }); test('no Data', () => { const { container } = render( , ); expect(container.firstChild).toMatchSnapshot(); }); test('drop', () => { jest.useFakeTimers(); const { container, getByRole } = render( , ); expect(getByRole('button', { name: 'Open search' })).toBeTruthy(); expect(container.firstChild).toMatchSnapshot(); fireEvent.click(getByRole('button', { name: 'Open search' })); // advance timers so drop can open act(() => jest.advanceTimersByTime(200)); // snapshot on drop expectPortal('test-data--search-control').toMatchSnapshot(); }); });