mirror of
https://github.com/grafana/grafana.git
synced 2025-08-02 18:12:13 +08:00

* add tests for empty dashboard page * add tests for AddPanelButton * export default components * test +Add menu in dashboard page * use userEvent instead of firing an event on the DOM itself * fix test to match new analytic events
49 lines
1.2 KiB
TypeScript
49 lines
1.2 KiB
TypeScript
import { render, screen } from '@testing-library/react';
|
|
import userEvent from '@testing-library/user-event';
|
|
import React from 'react';
|
|
|
|
import { defaultDashboard } from '@grafana/schema';
|
|
|
|
import { createDashboardModelFixture } from '../../state/__fixtures__/dashboardFixtures';
|
|
|
|
import AddPanelButton, { Props } from './AddPanelButton';
|
|
jest.mock('./AddPanelMenu', () => ({
|
|
...jest.requireActual('./AddPanelMenu'),
|
|
__esModule: true,
|
|
default: () => <div>Menu</div>,
|
|
}));
|
|
|
|
function setup(options?: Partial<Props>) {
|
|
const props = {
|
|
dashboard: createDashboardModelFixture(defaultDashboard),
|
|
};
|
|
const { rerender } = render(<AddPanelButton dashboard={props.dashboard} />);
|
|
|
|
return rerender;
|
|
}
|
|
|
|
beforeEach(() => {
|
|
jest.clearAllMocks();
|
|
});
|
|
|
|
it('renders button', () => {
|
|
setup();
|
|
|
|
expect(screen.getByRole('button', { name: 'Add' })).toBeInTheDocument();
|
|
});
|
|
|
|
it('renders button without menu when menu is not open', () => {
|
|
setup();
|
|
|
|
expect(screen.queryByText('Menu')).not.toBeInTheDocument();
|
|
});
|
|
|
|
it('renders button with menu when menu is open', async () => {
|
|
const user = userEvent.setup();
|
|
setup();
|
|
|
|
await user.click(screen.getByRole('button', { name: 'Add' }));
|
|
|
|
expect(screen.queryByText('Menu')).toBeInTheDocument();
|
|
});
|