diff --git a/public/app/features/alerting/unified/components/Expression.test.tsx b/public/app/features/alerting/unified/components/Expression.test.tsx new file mode 100644 index 00000000000..e35fe163176 --- /dev/null +++ b/public/app/features/alerting/unified/components/Expression.test.tsx @@ -0,0 +1,63 @@ +import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import React from 'react'; + +import { PluginType } from '@grafana/data'; + +import { Expression } from './Expression'; + +const expression = + '100 - ( avg by ( agent_hostname ) ( rate ( node_cpu_seconds_total { mode = "idle" } [ 2h ] ) ) * 100 ) > 97'; + +const rulesSource = { + id: 5, + uid: 'gdev-prometheus', + type: 'prometheus', + name: 'gdev-prometheus', + meta: { + id: 'prometheus', + type: PluginType.datasource, + name: 'Prometheus', + info: { + author: { + name: 'Grafana Labs', + url: 'https://grafana.com', + }, + description: 'Open source time series database & alerting', + links: [ + { + name: 'Learn more', + url: 'https://prometheus.io/', + }, + ], + logos: { + small: 'public/app/plugins/datasource/prometheus/img/prometheus_logo.svg', + large: 'public/app/plugins/datasource/prometheus/img/prometheus_logo.svg', + }, + build: {}, + screenshots: [], + version: '', + updated: '', + }, + module: 'app/plugins/datasource/prometheus/module', + baseUrl: 'public/app/plugins/datasource/prometheus', + }, + url: '/api/datasources/proxy/5', + access: 'proxy' as 'proxy', + jsonData: { + manageAlerts: true, + }, + readOnly: false, +}; + +describe('Expression', () => { + it('Should not allow to edit the text in the editor', () => { + render(); + + const editor = screen.getByTestId('expression-editor'); + userEvent.type(editor, 'something else'); + + expect(editor).toHaveTextContent(expression); + expect(editor).not.toHaveTextContent('something else'); + }); +}); diff --git a/public/app/features/alerting/unified/components/Expression.tsx b/public/app/features/alerting/unified/components/Expression.tsx index 26d5dcac01e..f6391784efb 100644 --- a/public/app/features/alerting/unified/components/Expression.tsx +++ b/public/app/features/alerting/unified/components/Expression.tsx @@ -34,12 +34,12 @@ export const HighlightedQuery: FC<{ language: 'promql' | 'logql'; expr: string } const slateValue = useMemo(() => makeValue(expr), [expr]); - return ; + //We don't want to set readOnly={true} to the Editor to prevent unwanted charaters in the copied text. See https://github.com/grafana/grafana/pull/57839 + return ; }; export const Expression: FC = ({ expression: query, rulesSource }) => { const styles = useStyles(getStyles); - return ( {isCloudRulesSource(rulesSource) ? (