mirror of
https://github.com/grafana/grafana.git
synced 2025-08-01 20:52:10 +08:00

* update eslint, tsconfig + esbuild to handle new jsx transform * remove thing that breaks the new jsx transform * remove react imports * adjust grafana-icons build * is this the correct syntax? * try this * well this was much easier than expected... * change grafana-plugin-configs webpack config * fixes * fix lockfile * fix 2 more violations * use path.resolve instead of require.resolve * remove react import * fix react imports * more fixes * remove React import * remove import React from docs * remove another react import
48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
import { render, screen } from '@testing-library/react';
|
|
import userEvent from '@testing-library/user-event';
|
|
|
|
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();
|
|
});
|