Skip to content

Commit cfd0b28

Browse files
test: migrate DetailsCard test from Enzyme to RTL (#2874)
Rewrote DetailsCard tests using RTL. Replaced snapshots with DOM assertions. Signed-off-by: Vishvamsinh Vaghela <vaghelavishvamsinh11111@gmail.com>
1 parent 2d30693 commit cfd0b28

File tree

2 files changed

+30
-269
lines changed

2 files changed

+30
-269
lines changed

packages/jaeger-ui/src/components/common/DetailsCard/__snapshots__/index.test.js.snap

Lines changed: 0 additions & 242 deletions
This file was deleted.

packages/jaeger-ui/src/components/common/DetailsCard/index.test.js

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -13,66 +13,69 @@
1313
// limitations under the License.
1414

1515
import React from 'react';
16-
import { shallow } from 'enzyme';
17-
16+
import { render, screen, fireEvent } from '@testing-library/react';
17+
import '@testing-library/jest-dom';
1818
import DetailsCard from '.';
1919

2020
describe('DetailsCard', () => {
2121
const header = 'Details Card Header';
2222

2323
it('renders string details', () => {
24-
const details = 'test details';
25-
expect(shallow(<DetailsCard details={details} header={header} />)).toMatchSnapshot();
24+
render(<DetailsCard details="test details" header={header} />);
25+
expect(screen.getByText('test details')).toBeInTheDocument();
26+
expect(screen.getByText(header)).toBeInTheDocument();
2627
});
2728

2829
it('handles empty details array', () => {
29-
const details = [];
30-
expect(shallow(<DetailsCard details={details} header={header} />)).toMatchSnapshot();
30+
const { container } = render(<DetailsCard details={[]} header={header} />);
31+
expect(container.querySelector('.DetailsCard--DetailsWrapper')?.textContent).toBe('');
3132
});
3233

3334
it('renders list details', () => {
3435
const details = ['foo', 'bar', 'baz'];
35-
expect(shallow(<DetailsCard details={details} header={header} />)).toMatchSnapshot();
36+
render(<DetailsCard details={details} header={header} />);
37+
details.forEach(item => {
38+
expect(screen.getByText(item)).toBeInTheDocument();
39+
});
3640
});
3741

3842
it('renders table details', () => {
3943
const details = [{ value: 'foo' }];
40-
expect(shallow(<DetailsCard details={details} header={header} />)).toMatchSnapshot();
44+
render(<DetailsCard details={details} header={header} />);
45+
expect(screen.getByText('foo')).toBeInTheDocument();
4146
});
4247

4348
it('renders table details with column defs', () => {
4449
const columnDefs = ['col'];
4550
const details = [{ [columnDefs[0]]: 'foo' }];
46-
expect(
47-
shallow(<DetailsCard columnDefs={columnDefs} details={details} header={header} />)
48-
).toMatchSnapshot();
51+
render(<DetailsCard columnDefs={columnDefs} details={details} header={header} />);
52+
expect(screen.getByText('foo')).toBeInTheDocument();
4953
});
5054

5155
it('renders with description', () => {
5256
const description = 'test description';
53-
expect(shallow(<DetailsCard description={description} header={header} />)).toMatchSnapshot();
57+
render(<DetailsCard description={description} header={header} details="..." />);
58+
expect(screen.getByText(description)).toBeInTheDocument();
5459
});
5560

5661
it('renders with className', () => {
57-
const className = 'test className';
58-
expect(shallow(<DetailsCard className={className} header={header} />)).toMatchSnapshot();
62+
const className = 'test-className';
63+
const { container } = render(<DetailsCard className={className} header={header} details="..." />);
64+
expect(container.firstChild).toHaveClass(className);
5965
});
6066

61-
it('renders as collapsible', () => {
62-
expect(
63-
shallow(<DetailsCard header={header} />)
64-
.find('.DetailsCard--DetailsWrapper')
65-
.hasClass('is-collapsed')
66-
).toBe(false);
67+
it('renders as collapsible and toggles collapsed state', () => {
68+
const { container } = render(<DetailsCard header={header} details="info" collapsible />);
69+
const collapsedWrapper = container.querySelector('.DetailsCard--DetailsWrapper');
70+
expect(collapsedWrapper).toHaveClass('is-collapsed');
6771

68-
const wrapper = shallow(<DetailsCard collapsible header={header} />);
69-
expect(wrapper.find('.DetailsCard--DetailsWrapper').hasClass('is-collapsed')).toBe(true);
70-
expect(wrapper).toMatchSnapshot();
72+
const toggleBtn = container.querySelector('button');
73+
expect(toggleBtn).toBeInTheDocument();
7174

72-
wrapper.find('button').simulate('click');
73-
expect(wrapper.find('.DetailsCard--DetailsWrapper').hasClass('is-collapsed')).toBe(false);
75+
fireEvent.click(toggleBtn);
76+
expect(collapsedWrapper).not.toHaveClass('is-collapsed');
7477

75-
wrapper.find('button').simulate('click');
76-
expect(wrapper.find('.DetailsCard--DetailsWrapper').hasClass('is-collapsed')).toBe(true);
78+
fireEvent.click(toggleBtn);
79+
expect(collapsedWrapper).toHaveClass('is-collapsed');
7780
});
7881
});

0 commit comments

Comments
 (0)