Skip to content

Commit d7248ef

Browse files
committed
migrate TraceTimelineViewer tests to RTL
Signed-off-by: Tejas Raskar <[email protected]>
1 parent 677e893 commit d7248ef

File tree

1 file changed

+53
-29
lines changed
  • packages/jaeger-ui/src/components/TracePage/TraceTimelineViewer

1 file changed

+53
-29
lines changed

packages/jaeger-ui/src/components/TracePage/TraceTimelineViewer/index.test.js

Lines changed: 53 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,32 @@
1313
// limitations under the License.
1414

1515
import React from 'react';
16-
import { shallow } from 'enzyme';
17-
import { render } from '@testing-library/react';
16+
import { fireEvent, render, screen } from '@testing-library/react';
17+
import { legacy_createStore as createStore } from 'redux';
18+
import { Provider } from 'react-redux';
1819

1920
import TraceTimelineViewer, { TraceTimelineViewerImpl } from './index';
2021
import * as KeyboardShortcuts from '../keyboard-shortcuts';
2122
import traceGenerator from '../../../demo/trace-generators';
2223
import transformTraceData from '../../../model/transform-trace-data';
23-
import TimelineHeaderRow from './TimelineHeaderRow';
2424

2525
jest.mock('./VirtualizedTraceView', () => () => <div data-testid="virtualized-trace-view-mock" />);
26+
jest.mock('./TimelineHeaderRow', () => props => (
27+
<div data-testid="timeline-header-row-mock">
28+
<button data-testid="collapse-all-button" type="button" onClick={props.onCollapseAll}>
29+
Collapse All
30+
</button>
31+
<button data-testid="expand-all-button" type="button" onClick={props.onExpandAll}>
32+
Expand All
33+
</button>
34+
<button data-testid="collapse-one-button" type="button" onClick={props.onCollapseOne}>
35+
Collapse One
36+
</button>
37+
<button data-testid="expand-one-button" type="button" onClick={props.onExpandOne}>
38+
Expand One
39+
</button>
40+
</div>
41+
));
2642

2743
describe('<TraceTimelineViewer>', () => {
2844
const trace = transformTraceData(traceGenerator.trace({}));
@@ -40,46 +56,54 @@ describe('<TraceTimelineViewer>', () => {
4056
expandOne: jest.fn(),
4157
collapseOne: jest.fn(),
4258
};
43-
const options = {
44-
context: {
45-
store: {
46-
getState() {
47-
return { traceTimeline: { spanNameColumnWidth: 0.25 } };
48-
},
49-
subscribe() {},
50-
dispatch() {},
51-
},
52-
},
59+
60+
const defaultState = {
61+
traceTimeline: { spanNameColumnWidth: 0.25 },
5362
};
5463

55-
let wrapper;
56-
let connectedWrapper;
64+
function renderWithRedux(ui, { initialState = defaultState } = {}) {
65+
const store = createStore((state = initialState) => state);
66+
67+
return {
68+
...render(<Provider store={store}>{ui}</Provider>),
69+
store,
70+
};
71+
}
5772

5873
beforeEach(() => {
59-
wrapper = shallow(<TraceTimelineViewerImpl {...props} />, options);
60-
connectedWrapper = shallow(<TraceTimelineViewer store={options.context.store} {...props} />, options);
61-
jest.spyOn(KeyboardShortcuts, 'merge');
74+
props.expandAll.mockClear();
75+
props.collapseAll.mockClear();
76+
props.expandOne.mockClear();
77+
props.collapseOne.mockClear();
78+
jest.spyOn(KeyboardShortcuts, 'merge').mockClear();
6279
});
6380

6481
afterEach(() => {
6582
KeyboardShortcuts.merge.mockRestore();
6683
});
6784

6885
it('it does not explode', () => {
69-
expect(wrapper).toBeDefined();
70-
expect(connectedWrapper).toBeDefined();
86+
render(<TraceTimelineViewerImpl {...props} />);
87+
renderWithRedux(<TraceTimelineViewer {...props} />);
7188
});
7289

7390
it('it sets up actions', () => {
74-
const headerRow = wrapper.find(TimelineHeaderRow);
75-
headerRow.props().onCollapseAll();
76-
headerRow.props().onExpandAll();
77-
headerRow.props().onExpandOne();
78-
headerRow.props().onCollapseOne();
79-
expect(props.collapseAll.mock.calls.length).toBe(1);
80-
expect(props.expandAll.mock.calls.length).toBe(1);
81-
expect(props.expandOne.mock.calls.length).toBe(1);
82-
expect(props.collapseOne.mock.calls.length).toBe(1);
91+
render(<TraceTimelineViewerImpl {...props} />);
92+
93+
fireEvent.click(screen.getByTestId('collapse-all-button'));
94+
expect(props.collapseAll).toHaveBeenCalledTimes(1);
95+
expect(props.collapseAll).toHaveBeenCalledWith(props.trace.spans);
96+
97+
fireEvent.click(screen.getByTestId('expand-all-button'));
98+
expect(props.expandAll).toHaveBeenCalledTimes(1);
99+
expect(props.expandAll).toHaveBeenCalledWith();
100+
101+
fireEvent.click(screen.getByTestId('collapse-one-button'));
102+
expect(props.collapseOne).toHaveBeenCalledTimes(1);
103+
expect(props.collapseOne).toHaveBeenCalledWith(props.trace.spans);
104+
fireEvent.click(screen.getByTestId('expand-one-button'));
105+
expect(props.expandOne).toHaveBeenCalledTimes(1);
106+
expect(props.expandOne).toHaveBeenCalledWith(props.trace.spans);
83107
});
84108

85109
it('it should call mergeShortcuts with the correct callbacks on mount', () => {

0 commit comments

Comments
 (0)