import { act, cleanup, fireEvent } from '@testing-library/react'; import { render } from '../../../utils/theme-render-wrapper'; import noop from 'lodash/noop'; import type { DropdownMenuItem } from '../../dropdown-menu'; import { mockData, mockTableConfig } from '../__mocks__'; import { DataGrid, GridFeatureModes, GridSpecialColumnFields } from '../index'; import type { DataGridProps } from '../index'; beforeEach(() => jest.useFakeTimers()); afterEach(() => { jest.useRealTimers(); cleanup(); }); const title1 = 'title1'; const title2 = 'title2'; const defaultNumOfRowsOptions: DropdownMenuItem[] = [ { name: 25, selected: false }, { name: 50, selected: false }, { name: 100, selected: true }, { name: 250, selected: false } ]; const Wrapper = (props: Partial) => ( ({ checkboxProps: { disabled: item.field === 'actions' }, hidden: item.field === 'actions', name: item.title || item.headerName || '', selected: true, value: item.field })), handleSearchChangeCallback: noop, handleTableSettingsMenuItemClick: () => noop, onChangeNumOfRows: () => noop, tableSettingsButtonHandler: noop, exportButtonProps: { onClick: noop } }} paginationProps={{ page: 0, count: mockData.data.length, rowsPerPage: defaultNumOfRowsOptions[0].name as number, onChangePage: noop }} {...props} /> ); describe('', () => { it(`should render successfully and check column hover`, () => { const { queryAllByRole } = render(); const headerEl = queryAllByRole('columnheader'); fireEvent.mouseOver(headerEl[1]); fireEvent.mouseOut(headerEl[1]); }); it(`should render with treeData and all toolbar buttons`, () => { const { getByTestId } = render( ); act(() => { getByTestId('childCollapseButton').click(); getByTestId('exportButton').click(); getByTestId('rowSelectionButton').click(); getByTestId('tableSettingsButton').click(); }); }); it(`should render with checkboxes, pinnedColumns and treeData`, () => { const { getByTestId } = render( ); const buttonEl = getByTestId('childCollapseButton'); fireEvent.keyDown(buttonEl, { key: 'Enter' }); buttonEl.click(); }); it(`should render/scroll in server-side mode with autoHeight`, () => { render( ); act(() => { fireEvent.scroll(window, { target: { scrollY: 1024 } }); }); }); it(`should render loader skeleton with pinned columns`, () => { render( ); jest.runAllTimers(); }); it(`should render with autoHeight and lazyLoading`, () => { const setTimeoutSpy = jest.spyOn(global, 'setTimeout'); render(); act(() => { // trigger an event for LazyLoadingGridRow fireEvent.scroll(window, { target: { scrollY: 1024 } }); jest.runAllTimers(); }); expect(setTimeoutSpy).toHaveBeenCalled(); setTimeoutSpy.mockClear(); }); });