grafana_bak/public/app/features/explore/SecondaryActions.test.tsx
2025-04-01 10:38:02 +09:00

92 lines
3.0 KiB
TypeScript

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(
<QueryLibraryContextProviderMock>
<SecondaryActions
onClickAddQueryRowButton={noop}
onClickQueryInspectorButton={noop}
onSelectQueryFromLibrary={noop}
/>
</QueryLibraryContextProviderMock>
);
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(
<QueriesDrawerContextProviderMock queryLibraryAvailable={false}>
<SecondaryActions
addQueryRowButtonHidden={true}
richHistoryRowButtonHidden={true}
onClickAddQueryRowButton={noop}
onClickQueryInspectorButton={noop}
onSelectQueryFromLibrary={noop}
/>
</QueriesDrawerContextProviderMock>
);
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(
<SecondaryActions
addQueryRowButtonDisabled={true}
onClickAddQueryRowButton={noop}
onClickQueryInspectorButton={noop}
onSelectQueryFromLibrary={noop}
/>
);
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(
<QueriesDrawerContextProviderMock setDrawerOpened={onClickHistory}>
<SecondaryActions
onClickAddQueryRowButton={onClickAddRow}
onClickQueryInspectorButton={onClickQueryInspector}
onSelectQueryFromLibrary={noop}
/>
</QueriesDrawerContextProviderMock>
);
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);
});
});