diff --git a/.betterer.results b/.betterer.results index 20f039f9db5..f72393aa21f 100644 --- a/.betterer.results +++ b/.betterer.results @@ -92,9 +92,6 @@ exports[`no enzyme tests`] = { "public/app/plugins/datasource/loki/configuration/ConfigEditor.test.tsx:2659566901": [ [0, 17, 13, "RegExp match", "2409514259"] ], - "public/app/plugins/datasource/loki/configuration/DebugSection.test.tsx:1551927716": [ - [0, 17, 13, "RegExp match", "2409514259"] - ], "public/app/plugins/datasource/loki/configuration/DerivedField.test.tsx:3570129984": [ [0, 19, 13, "RegExp match", "2409514259"] ], @@ -7258,12 +7255,8 @@ exports[`better eslint`] = { [0, 0, 0, "Unexpected any. Specify a different type.", "0"] ], "public/app/plugins/datasource/loki/configuration/DebugSection.tsx:5381": [ - [0, 0, 0, "Unexpected any. Specify a different type.", "0"], - [0, 0, 0, "Unexpected any. Specify a different type.", "1"], - [0, 0, 0, "Do not use any type assertions.", "2"], - [0, 0, 0, "Unexpected any. Specify a different type.", "3"], - [0, 0, 0, "Do not use any type assertions.", "4"], - [0, 0, 0, "Do not use any type assertions.", "5"] + [0, 0, 0, "Do not use any type assertions.", "0"], + [0, 0, 0, "Unexpected any. Specify a different type.", "1"] ], "public/app/plugins/datasource/loki/configuration/DerivedField.test.tsx:5381": [ [0, 0, 0, "Unexpected any. Specify a different type.", "0"], diff --git a/public/app/plugins/datasource/loki/configuration/DebugSection.test.tsx b/public/app/plugins/datasource/loki/configuration/DebugSection.test.tsx index 82d6b2064ea..6eb14771d10 100644 --- a/public/app/plugins/datasource/loki/configuration/DebugSection.test.tsx +++ b/public/app/plugins/datasource/loki/configuration/DebugSection.test.tsx @@ -1,4 +1,5 @@ -import { mount } from 'enzyme'; +import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; import React from 'react'; import { dateTime, TimeRange } from '@grafana/data'; @@ -48,20 +49,12 @@ describe('DebugSection', () => { setLinkSrv(originalLinkSrv); }); - it('does not render any field if no debug text', () => { - const wrapper = mount(); - expect(wrapper.find('DebugFieldItem').length).toBe(0); + it('does not render any table rows if no debug text', () => { + render(); + expect(screen.queryByRole('row')).not.toBeInTheDocument(); }); - it('does not render any field if no derived fields', () => { - const wrapper = mount(); - const textarea = wrapper.find('textarea'); - (textarea.getDOMNode() as HTMLTextAreaElement).value = 'traceId=1234'; - textarea.simulate('change'); - expect(wrapper.find('DebugFieldItem').length).toBe(0); - }); - - it('renders derived fields', () => { + it('renders derived fields as table rows', async () => { const derivedFields = [ { matcherRegex: 'traceId=(\\w+)', @@ -78,14 +71,14 @@ describe('DebugSection', () => { }, ]; - const wrapper = mount(); - const textarea = wrapper.find('textarea'); - (textarea.getDOMNode() as HTMLTextAreaElement).value = 'traceId=1234'; - textarea.simulate('change'); + render(); + const textarea = screen.getByRole('textbox'); + await userEvent.type(textarea, 'traceId=1234'); - expect(wrapper.find('table').length).toBe(1); + expect(screen.getByRole('table')).toBeInTheDocument(); // 3 rows + one header - expect(wrapper.find('tr').length).toBe(4); - expect(wrapper.find('tr').at(1).contains('http://localhost/trace/${__value.raw}')).toBeTruthy(); + const rows = screen.getAllByRole('row'); + expect(rows.length).toBe(4); + expect(rows[1]).toHaveTextContent('http://localhost/trace/${__value.raw}'); }); }); diff --git a/public/app/plugins/datasource/loki/configuration/DebugSection.tsx b/public/app/plugins/datasource/loki/configuration/DebugSection.tsx index 49f8c958e5e..a5eeb577400 100644 --- a/public/app/plugins/datasource/loki/configuration/DebugSection.tsx +++ b/public/app/plugins/datasource/loki/configuration/DebugSection.tsx @@ -1,6 +1,6 @@ import { css } from '@emotion/css'; import cx from 'classnames'; -import React, { useState } from 'react'; +import React, { ReactNode, useState } from 'react'; import { ArrayVector, Field, FieldType, LinkModel } from '@grafana/data'; import { LegacyForms } from '@grafana/ui'; @@ -62,8 +62,8 @@ const DebugFields = ({ fields }: DebugFieldItemProps) => { {fields.map((field) => { - let value: any = field.value; - if (field.error) { + let value: ReactNode = field.value; + if (field.error && field.error instanceof Error) { value = field.error.message; } else if (field.href) { value = {value}; @@ -83,7 +83,7 @@ const DebugFields = ({ fields }: DebugFieldItemProps) => { type DebugField = { name: string; - error?: any; + error?: unknown; value?: string; href?: string; }; @@ -112,16 +112,18 @@ function makeDebugFields(derivedFields: DerivedFieldConfig[], debugText: string) })[0]; } - return { + const result: DebugField = { name: field.name, value: value || '', - href: link && link.href, - } as DebugField; + href: link ? link.href : undefined, + }; + return result; } catch (error) { - return { + const result: DebugField = { name: field.name, error, - } as DebugField; + }; + return result; } }); }