import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { locationService } from '@grafana/runtime'; import { PanelNotSupported, Props } from './PanelNotSupported'; import { PanelEditorTabId } from './types'; const setupTestContext = (options: Partial) => { const defaults: Props = { message: '' }; const props = { ...defaults, ...options }; render(); return { props }; }; describe('PanelNotSupported', () => { describe('when component is mounted', () => { it('then the supplied message should be shown', () => { setupTestContext({ message: 'Expected message' }); expect(screen.getByRole('heading', { name: /expected message/i })).toBeInTheDocument(); }); it('then the back to queries button should exist', () => { setupTestContext({ message: 'Expected message' }); expect(screen.getByRole('button', { name: /go back to queries/i })).toBeInTheDocument(); }); }); describe('when the back to queries button is clicked', () => { it('then correct action should be dispatched', async () => { setupTestContext({}); await userEvent.click(screen.getByRole('button', { name: /go back to queries/i })); expect(locationService.getSearchObject().tab).toBe(PanelEditorTabId.Query); }); }); });