From a0949314ef182218a72c812026dac71bf2b76133 Mon Sep 17 00:00:00 2001 From: Seyaji <67058118+Seyaji@users.noreply.github.com> Date: Wed, 22 Jun 2022 18:00:04 +0100 Subject: [PATCH] Convert AccordianLogsTest to RTL (#51260) Co-authored-by: Ashley Harrison --- .betterer.results | 3 - .../SpanDetail/AccordianLogs.test.js | 80 ++++++++----------- 2 files changed, 34 insertions(+), 49 deletions(-) diff --git a/.betterer.results b/.betterer.results index 10d830aecf2..37f471c894e 100644 --- a/.betterer.results +++ b/.betterer.results @@ -47,9 +47,6 @@ exports[`no enzyme tests`] = { "packages/jaeger-ui-components/src/TraceTimelineViewer/ListView/index.test.js:1734982398": [ [14, 26, 13, "RegExp match", "2409514259"] ], - "packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetail/AccordianLogs.test.js:3960703835": [ - [14, 19, 13, "RegExp match", "2409514259"] - ], "packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetail/AccordianReferences.test.js:2025513694": [ [14, 19, 13, "RegExp match", "2409514259"] ], diff --git a/packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetail/AccordianLogs.test.js b/packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetail/AccordianLogs.test.js index 3d05c9505d5..947a805b633 100644 --- a/packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetail/AccordianLogs.test.js +++ b/packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetail/AccordianLogs.test.js @@ -12,31 +12,29 @@ // See the License for the specific language governing permissions and // limitations under the License. -import { shallow } from 'enzyme'; +import { render, screen } from '@testing-library/react'; import React from 'react'; -import AccordianKeyValues from './AccordianKeyValues'; import AccordianLogs from './AccordianLogs'; -describe('', () => { - let wrapper; +const logs = [ + { + timestamp: 10, + fields: [ + { key: 'message', value: 'oh the log message' }, + { key: 'something', value: 'else' }, + ], + }, + { + timestamp: 20, + fields: [ + { key: 'message', value: 'oh the next log message' }, + { key: 'more', value: 'stuff' }, + ], + }, +]; - const logs = [ - { - timestamp: 10, - fields: [ - { key: 'message', value: 'oh the log message' }, - { key: 'something', value: 'else' }, - ], - }, - { - timestamp: 20, - fields: [ - { key: 'message', value: 'oh the next log message' }, - { key: 'more', value: 'stuff' }, - ], - }, - ]; +const setup = (propOverrides) => { const props = { logs, isOpen: false, @@ -44,45 +42,35 @@ describe('', () => { onToggle: () => {}, openedItems: new Set([logs[1]]), timestamp: 5, + ...propOverrides, }; - beforeEach(() => { - props.onItemToggle.mockReset(); - wrapper = shallow(); - }); + return render(); +}; +describe('AccordianLogs tests', () => { it('renders without exploding', () => { - expect(wrapper).toBeDefined(); + expect(() => setup()).not.toThrow(); }); it('shows the number of log entries', () => { - const regex = new RegExp(`Logs \\(${logs.length}\\)`); - expect(wrapper.find('a').text()).toMatch(regex); + setup(); + + expect(screen.getByRole('switch', { name: 'Logs (2)' })).toBeInTheDocument(); }); it('hides log entries when not expanded', () => { - expect(wrapper.find(AccordianKeyValues).exists()).toBe(false); + setup({ isOpen: false }); + + expect(screen.queryByRole('table')).not.toBeInTheDocument(); }); it('shows log entries when expanded', () => { - expect(wrapper.find(AccordianKeyValues).exists()).toBe(false); - wrapper.setProps({ isOpen: true }); - const logViews = wrapper.find(AccordianKeyValues); - expect(logViews.length).toBe(logs.length); + setup({ isOpen: true }); - logViews.forEach((node, i) => { - const log = logs[i]; - expect(node.prop('data')).toBe(log.fields); - node.simulate('toggle'); - expect(props.onItemToggle).toHaveBeenLastCalledWith(log); - }); - }); - - it('propagates isOpen to log items correctly', () => { - wrapper.setProps({ isOpen: true }); - const logViews = wrapper.find(AccordianKeyValues); - logViews.forEach((node, i) => { - expect(node.prop('isOpen')).toBe(props.openedItems.has(logs[i])); - }); + expect(screen.getByRole('table')).toBeInTheDocument(); + expect(screen.queryAllByRole('cell')).toHaveLength(6); + expect(screen.getByText(/^something$/)).toBeInTheDocument(); + expect(screen.getByText(/^else$/)).toBeInTheDocument(); }); });