diff --git a/.betterer.results b/.betterer.results index 87321199593..cb37a88ee6e 100644 --- a/.betterer.results +++ b/.betterer.results @@ -47,9 +47,6 @@ exports[`no enzyme tests`] = { "packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetail/index.test.js:700147304": [ [16, 19, 13, "RegExp match", "2409514259"] ], - "packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetailRow.test.js:2623922632": [ - [14, 19, 13, "RegExp match", "2409514259"] - ], "packages/jaeger-ui-components/src/TraceTimelineViewer/SpanTreeOffset.test.js:174536706": [ [14, 19, 13, "RegExp match", "2409514259"] ], diff --git a/packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetail/index.tsx b/packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetail/index.tsx index c337bf45a7d..8f4b5e5cfae 100644 --- a/packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetail/index.tsx +++ b/packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetail/index.tsx @@ -195,7 +195,7 @@ export default function SpanDetail(props: SpanDetailProps) { const focusSpanLink = createFocusSpanLink(traceID, spanID); return ( -
+

{operationName}

diff --git a/packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetailRow.test.js b/packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetailRow.test.js index c06156dc950..282ea1851f0 100644 --- a/packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetailRow.test.js +++ b/packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetailRow.test.js @@ -12,89 +12,69 @@ // 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 userEvent from '@testing-library/user-event'; import React from 'react'; import { createTheme } from '@grafana/data'; -import SpanDetail from './SpanDetail'; import DetailState from './SpanDetail/DetailState'; import { UnthemedSpanDetailRow } from './SpanDetailRow'; -import SpanTreeOffset from './SpanTreeOffset'; -jest.mock('./SpanTreeOffset'); - -describe('', () => { - const spanID = 'some-id'; +const testSpan = { + spanID: 'testSpanID', + traceID: 'testTraceID', + depth: 3, + process: { + serviceName: 'some-service', + tags: [{ key: 'tag-key', value: 'tag-value' }], + }, +}; +const setup = (propOverrides) => { const props = { color: 'some-color', columnDivision: 0.5, detailState: new DetailState(), onDetailToggled: jest.fn(), - linksGetter: jest.fn(), isFilteredOut: false, logItemToggle: jest.fn(), logsToggle: jest.fn(), processToggle: jest.fn(), - span: { spanID, depth: 3 }, + createFocusSpanLink: jest.fn(), + hoverIndentGuideIds: new Map(), + span: testSpan, tagsToggle: jest.fn(), traceStartTime: 1000, theme: createTheme(), + ...propOverrides, }; + return render(); +}; - let wrapper; - - beforeEach(() => { - props.onDetailToggled.mockReset(); - props.linksGetter.mockReset(); - props.logItemToggle.mockReset(); - props.logsToggle.mockReset(); - props.processToggle.mockReset(); - props.tagsToggle.mockReset(); - wrapper = shallow(); - }); - +describe('SpanDetailRow tests', () => { it('renders without exploding', () => { - expect(wrapper).toBeDefined(); + expect(() => setup()).not.toThrow(); }); - it('escalates toggle detail', () => { - const calls = props.onDetailToggled.mock.calls; - expect(calls.length).toBe(0); - wrapper.find('[data-test-id="detail-row-expanded-accent"]').prop('onClick')(); - expect(calls).toEqual([[spanID]]); + it('calls toggle on click', async () => { + const mockToggle = jest.fn(); + setup({ onDetailToggled: mockToggle }); + expect(mockToggle).not.toHaveBeenCalled(); + + const detailRow = screen.getByTestId('detail-row-expanded-accent'); + await userEvent.click(detailRow); + expect(mockToggle).toHaveBeenCalled(); }); it('renders the span tree offset', () => { - const spanTreeOffset = ; - expect(wrapper.contains(spanTreeOffset)).toBe(true); + setup(); + + expect(screen.getByTestId('SpanTreeOffset--indentGuide')).toBeInTheDocument(); }); it('renders the SpanDetail', () => { - const spanDetail = ( - - ); - expect(wrapper.contains(spanDetail)).toBe(true); - }); + setup(); - it('adds span when calling linksGetter', () => { - const spanDetail = wrapper.find(SpanDetail); - const linksGetter = spanDetail.prop('linksGetter'); - const tags = [{ key: 'myKey', value: 'myValue' }]; - const linksGetterResponse = {}; - props.linksGetter.mockReturnValueOnce(linksGetterResponse); - const result = linksGetter(tags, 0); - expect(result).toBe(linksGetterResponse); - expect(props.linksGetter).toHaveBeenCalledTimes(1); - expect(props.linksGetter).toHaveBeenCalledWith(props.span, tags, 0); + expect(screen.getByTestId('span-detail-component')).toBeInTheDocument(); }); }); diff --git a/packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetailRow.tsx b/packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetailRow.tsx index 8bd0944a9e3..16c34dcb12d 100644 --- a/packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetailRow.tsx +++ b/packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetailRow.tsx @@ -150,7 +150,7 @@ export class UnthemedSpanDetailRow extends React.PureComponent