From 8c5a92520273535629891a7310826730dbbc993b Mon Sep 17 00:00:00 2001 From: Matias Chomicki Date: Mon, 17 Jun 2024 16:56:15 +0200 Subject: [PATCH] LogRows: remove app restriction from popover menu (#89276) * LogRows: remove app restriction from popover menu * chore: update tests * Prettier --- .../features/logs/components/LogRows.test.tsx | 35 +++++++++++++++---- .../app/features/logs/components/LogRows.tsx | 2 +- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/public/app/features/logs/components/LogRows.test.tsx b/public/app/features/logs/components/LogRows.test.tsx index 5bf9fcb53da..0d6dce447d9 100644 --- a/public/app/features/logs/components/LogRows.test.tsx +++ b/public/app/features/logs/components/LogRows.test.tsx @@ -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 = {}) { const rows: LogRowModel[] = [createLogRow({ uid: '1' })]; return render( { 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); + }); }); diff --git a/public/app/features/logs/components/LogRows.tsx b/public/app/features/logs/components/LogRows.tsx index 41100a4c634..87306b91e2a 100644 --- a/public/app/features/logs/components/LogRows.tsx +++ b/public/app/features/logs/components/LogRows.tsx @@ -105,7 +105,7 @@ class UnThemedLogRows extends PureComponent { }; popoverMenuSupported() { - if (!config.featureToggles.logRowsPopoverMenu || this.props.app !== CoreApp.Explore) { + if (!config.featureToggles.logRowsPopoverMenu) { return false; } return Boolean(this.props.onClickFilterOutString || this.props.onClickFilterString);