LogRows: remove app restriction from popover menu (#89276)

* LogRows: remove app restriction from popover menu

* chore: update tests

* Prettier
This commit is contained in:
Matias Chomicki 2024-06-17 16:56:15 +02:00 committed by GitHub
parent 8fddf30621
commit 8c5a925202
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 30 additions and 7 deletions

View File

@ -3,9 +3,9 @@ import userEvent from '@testing-library/user-event';
import { range } from 'lodash';
import React from 'react';
import { CoreApp, LogRowModel, LogsDedupStrategy, LogsSortOrder } from '@grafana/data';
import { LogRowModel, LogsDedupStrategy, LogsSortOrder } from '@grafana/data';
import { LogRows, PREVIEW_LIMIT } from './LogRows';
import { LogRows, PREVIEW_LIMIT, Props } from './LogRows';
import { createLogRow } from './__mocks__/logRow';
jest.mock('@grafana/runtime', () => ({
@ -207,7 +207,7 @@ describe('LogRows', () => {
});
describe('Popover menu', () => {
function setup(app = CoreApp.Explore) {
function setup(overrides: Partial<Props> = {}) {
const rows: LogRowModel[] = [createLogRow({ uid: '1' })];
return render(
<LogRows
@ -223,7 +223,7 @@ describe('Popover menu', () => {
displayedFields={[]}
onClickFilterOutString={() => {}}
onClickFilterString={() => {}}
app={app}
{...overrides}
/>
);
}
@ -232,6 +232,8 @@ describe('Popover menu', () => {
orgGetSelection = document.getSelection;
jest.spyOn(document, 'getSelection').mockReturnValue({
toString: () => 'selected log line',
removeAllRanges: () => {},
addRange: (range: Range) => {},
} as Selection);
});
afterAll(() => {
@ -248,9 +250,30 @@ describe('Popover menu', () => {
expect(screen.getByText('Add as line contains filter')).toBeInTheDocument();
expect(screen.getByText('Add as line does not contain filter')).toBeInTheDocument();
});
it('Does not appear outside Explore', async () => {
setup(CoreApp.Unknown);
it('Does not appear when the props are not defined', async () => {
setup({
onClickFilterOutString: undefined,
onClickFilterString: undefined,
});
await userEvent.click(screen.getByText('log message 1'));
expect(screen.queryByText('Copy selection')).not.toBeInTheDocument();
});
it('Appears after selecting test', async () => {
const onClickFilterOutString = jest.fn();
const onClickFilterString = jest.fn();
setup({
onClickFilterOutString,
onClickFilterString,
});
await userEvent.click(screen.getByText('log message 1'));
expect(screen.getByText('Copy selection')).toBeInTheDocument();
await userEvent.click(screen.getByText('Add as line contains filter'));
await userEvent.click(screen.getByText('log message 1'));
expect(screen.getByText('Copy selection')).toBeInTheDocument();
await userEvent.click(screen.getByText('Add as line does not contain filter'));
expect(onClickFilterOutString).toHaveBeenCalledTimes(1);
expect(onClickFilterString).toHaveBeenCalledTimes(1);
});
});

View File

@ -105,7 +105,7 @@ class UnThemedLogRows extends PureComponent<Props, State> {
};
popoverMenuSupported() {
if (!config.featureToggles.logRowsPopoverMenu || this.props.app !== CoreApp.Explore) {
if (!config.featureToggles.logRowsPopoverMenu) {
return false;
}
return Boolean(this.props.onClickFilterOutString || this.props.onClickFilterString);