import { render as rtlRender, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import React from 'react'; import { TestProvider } from 'test/helpers/TestProvider'; import { assertIsDefined } from 'test/helpers/asserts'; import { selectors } from '@grafana/e2e-selectors'; import { wellFormedDashboard, wellFormedEmptyFolder, wellFormedFolder } from '../fixtures/dashboardsTreeItem.fixture'; import { SelectionState } from '../types'; import { DashboardsTree } from './DashboardsTree'; function render(...[ui, options]: Parameters) { rtlRender({ui}, options); } describe('browse-dashboards DashboardsTree', () => { const WIDTH = 800; const HEIGHT = 600; const folder = wellFormedFolder(1); const emptyFolderIndicator = wellFormedEmptyFolder(); const dashboard = wellFormedDashboard(2); const noop = () => {}; const isSelected = () => SelectionState.Unselected; it('renders a dashboard item', () => { render( ); expect(screen.queryByText(dashboard.item.title)).toBeInTheDocument(); expect(screen.queryByText('Dashboard')).toBeInTheDocument(); expect(screen.queryByText(assertIsDefined(dashboard.item.tags)[0])).toBeInTheDocument(); expect(screen.getByTestId(selectors.pages.BrowseDashbards.table.checkbox(dashboard.item.uid))).toBeInTheDocument(); }); it('does not render checkbox when disabled', () => { render( ); expect( screen.queryByTestId(selectors.pages.BrowseDashbards.table.checkbox(dashboard.item.uid)) ).not.toBeInTheDocument(); }); it('renders a folder item', () => { render( ); expect(screen.queryByText(folder.item.title)).toBeInTheDocument(); expect(screen.queryByText('Folder')).toBeInTheDocument(); }); it('calls onFolderClick when a folder button is clicked', async () => { const handler = jest.fn(); render( ); const folderButton = screen.getByLabelText('Collapse folder'); await userEvent.click(folderButton); expect(handler).toHaveBeenCalledWith(folder.item.uid, false); }); it('renders empty folder indicators', () => { render( ); expect(screen.queryByText('Empty folder')).toBeInTheDocument(); expect(screen.queryByText(emptyFolderIndicator.item.kind)).not.toBeInTheDocument(); }); });