import { screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { noop } from 'lodash'; import { render } from '../../../test/test-utils'; import { QueriesDrawerContextProviderMock } from './QueriesDrawer/mocks'; import { QueryLibraryContextProviderMock } from './QueryLibrary/mocks'; import { SecondaryActions } from './SecondaryActions'; jest.mock('@grafana/runtime/src/services/dataSourceSrv', () => { return { getDataSourceSrv: () => ({ get: () => Promise.resolve({}), getList: () => [], getInstanceSettings: () => {}, }), }; }); describe('SecondaryActions', () => { it('should render component with two buttons', () => { render( ); expect(screen.getByRole('button', { name: /Add query/i })).toBeInTheDocument(); expect(screen.getByRole('button', { name: /Query inspector/i })).toBeInTheDocument(); }); it('should not render hidden elements', () => { render( ); expect(screen.queryByRole('button', { name: /Add query/i })).not.toBeInTheDocument(); expect(screen.getByRole('button', { name: /Query inspector/i })).toBeInTheDocument(); }); it('should disable add row button if addQueryRowButtonDisabled=true', () => { render( ); expect(screen.getByRole('button', { name: /Add query/i })).toBeDisabled(); expect(screen.getByRole('button', { name: /Query inspector/i })).toBeInTheDocument(); }); it('should map click handlers correctly', async () => { const user = userEvent.setup(); const onClickAddRow = jest.fn(); const onClickHistory = jest.fn(); const onClickQueryInspector = jest.fn(); render( ); await user.click(screen.getByRole('button', { name: /Add query/i })); expect(onClickAddRow).toBeCalledTimes(1); await user.click(screen.getByRole('button', { name: /Query inspector/i })); expect(onClickQueryInspector).toBeCalledTimes(1); }); });