import uniqueId from 'lodash/uniqueId'; import { act, cleanup, fireEvent } from '@testing-library/react'; import { render } from '../../../utils/theme-render-wrapper'; import { ASSETS_URL } from '../../../consts/common'; import { gridCheckboxSelectionColDef, GridCustomColumnTypes } from '../column-types'; import { ActionButton, ActionButtonProps, BackToTop, LazyLoadingGridCell, SkeletonizedGridCell } from '../components'; import { getGridCustomColumnTypeByField, getGridCustomColumnTypes } from '../index'; import type { GridRenderCellParams } from '../index'; import { getRenderCellParams } from './helpers'; beforeEach(cleanup); const mockFunc = jest.fn(); const action: ActionButtonProps['action'] = { iconSrc: `${ASSETS_URL}/icons2/icon_view.svg`, tooltipText: 'View', value: 'view', onClick: value => mockFunc }; const row: ActionButtonProps['row'] = { _id: uniqueId() }; describe('Check DataGrid components', () => { describe('', () => { it(`should render button without tooltip`, () => { jest.useFakeTimers(); const { container, queryByRole } = render( ); const buttonEl = container.querySelector('button'); act(() => { buttonEl && fireEvent.mouseOver(buttonEl); jest.runAllTimers(); // because of `enterDelay` }); expect(queryByRole('tooltip')).toBeFalsy(); buttonEl?.click(); expect(mockFunc).toBeCalled(); }); it(`should render button with tooltip`, () => { jest.useFakeTimers(); const tooltipText = 'tooltip text'; const { container, queryByText } = render( ); expect(queryByText(tooltipText)).toBeFalsy(); const buttonEl = container.querySelector('button'); act(() => { buttonEl && fireEvent.mouseOver(buttonEl); jest.runAllTimers(); // because of `enterDelay` }); expect(queryByText(tooltipText)).toBeTruthy(); }); }); describe('', () => { it(`should render successfully`, () => { global.scrollTo = jest.fn(); const { queryByTestId } = render(); queryByTestId('backToTop')?.click(); expect(mockFunc).toBeCalled(); }); }); describe('', () => { it(`should render successfully`, () => { const field = 'arr'; const colType = getGridCustomColumnTypeByField(field); const colTypeDef = { ...getGridCustomColumnTypes()[colType], field }; const row = { _id: 'test_uid', arr: 123 }; const value = row['arr']; const renderCellParams = getRenderCellParams({ colDef: { ...colTypeDef, field } as GridRenderCellParams['colDef'], colType, field, row, value }); const { baseElement } = render(); expect(baseElement).toBeTruthy(); }); }); describe('', () => { it(`should render successfully`, () => { const colTypeDef = gridCheckboxSelectionColDef; const colType = colTypeDef.type as GridCustomColumnTypes; const field = colTypeDef.field; const row = { _id: 'test_uid' }; const renderCellParams = getRenderCellParams({ colDef: { ...colTypeDef, field } as GridRenderCellParams['colDef'], colType, field, row }); const { baseElement } = render(); expect(baseElement).toBeTruthy(); }); }); });