Skip to content

Commit a579455

Browse files
test: Remove unwanted mocks, unmocks and deprecate react-unit-test-utils package (#465)
* test: remove last snapshot * test: remove unwanted mocks, remove unmocks, refactor renderWithIntl * test: refactor renderWithIntl with small improvements * test: remove react-unit-test-utils * test: change fireEvent for userEvent
1 parent b10aa63 commit a579455

File tree

59 files changed

+266
-735
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+266
-735
lines changed

package-lock.json

Lines changed: 8 additions & 41 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@
7676
},
7777
"devDependencies": {
7878
"@edx/browserslist-config": "^1.3.0",
79-
"@edx/react-unit-test-utils": "^4.0.0",
8079
"@edx/reactifex": "^2.1.1",
8180
"@openedx/frontend-build": "^14.3.3",
8281
"@testing-library/jest-dom": "^6.6.3",

src/App.test.jsx

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
1-
import { render, screen } from '@testing-library/react';
2-
import { IntlProvider } from '@edx/frontend-platform/i18n';
1+
import { screen } from '@testing-library/react';
32
import { selectors } from 'data/redux';
3+
import { renderWithIntl } from './testUtils';
44
import { App, mapStateToProps } from './App';
55

6-
jest.unmock('react');
7-
jest.unmock('@openedx/paragon');
8-
jest.unmock('@edx/frontend-platform/i18n');
9-
106
// we want to scope these tests to the App component, so we mock some child components to reduce complexity
117

128
jest.mock('@edx/frontend-platform/auth', () => ({
@@ -39,12 +35,6 @@ jest.mock('data/redux', () => ({
3935
},
4036
}));
4137

42-
const renderWithIntl = (component) => render(
43-
<IntlProvider locale="en" messages={{}}>
44-
{component}
45-
</IntlProvider>,
46-
);
47-
4838
describe('App component', () => {
4939
const defaultProps = {
5040
courseMetadata: {

src/__snapshots__/index.test.jsx.snap

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

src/components/ConfirmModal.test.jsx

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@ import { render, screen } from '@testing-library/react';
22
import userEvent from '@testing-library/user-event';
33
import { ConfirmModal } from './ConfirmModal';
44

5-
jest.unmock('@openedx/paragon');
6-
jest.unmock('react');
7-
85
describe('ConfirmModal', () => {
96
const props = {
107
isOpen: false,
@@ -21,13 +18,13 @@ describe('ConfirmModal', () => {
2118
});
2219

2320
it('should not render content when modal is closed', () => {
24-
const { queryByText } = render(<ConfirmModal {...props} />);
25-
expect(queryByText(props.content)).toBeNull();
21+
render(<ConfirmModal {...props} />);
22+
expect(screen.queryByText(props.content)).toBeNull();
2623
});
2724

2825
it('should display content when modal is open', () => {
29-
const { getByText } = render(<ConfirmModal {...props} isOpen />);
30-
expect(getByText(props.content)).toBeInTheDocument();
26+
render(<ConfirmModal {...props} isOpen />);
27+
expect(screen.getByText(props.content)).toBeInTheDocument();
3128
});
3229

3330
it('should call onCancel when cancel button is clicked', async () => {
Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,32 @@
1-
import { render, fireEvent } from '@testing-library/react';
1+
import { screen } from '@testing-library/react';
2+
import userEvent from '@testing-library/user-event';
3+
import { renderWithIntl } from '../../testUtils';
24

3-
import { formatMessage } from 'testUtils';
45
import messages from './messages';
56
import { DemoAlert } from '.';
67

7-
jest.unmock('@openedx/paragon');
8-
jest.unmock('react');
9-
108
describe('DemoAlert component', () => {
119
const props = {
1210
isOpen: true,
1311
onClose: jest.fn().mockName('props.onClose'),
1412
};
1513

1614
it('does not render when isOpen is false', () => {
17-
const { queryByText } = render(<DemoAlert {...props} isOpen={false} />);
18-
expect(queryByText(formatMessage(messages.title))).toBeNull();
15+
renderWithIntl(<DemoAlert {...props} isOpen={false} />);
16+
expect(screen.queryByText(messages.title.defaultMessage)).toBeNull();
1917
});
2018

2119
it('renders with correct title and message when isOpen is true', () => {
22-
const { getByText } = render(<DemoAlert {...props} />);
23-
expect(getByText(formatMessage(messages.title))).toBeInTheDocument();
24-
expect(getByText(formatMessage(messages.warningMessage))).toBeInTheDocument();
20+
renderWithIntl(<DemoAlert {...props} />);
21+
expect(screen.getByText(messages.title.defaultMessage)).toBeInTheDocument();
22+
expect(screen.getByText(messages.warningMessage.defaultMessage)).toBeInTheDocument();
2523
});
2624

27-
it('calls onClose when confirmation button is clicked', () => {
28-
const { getByText } = render(<DemoAlert {...props} />);
29-
const confirmButton = getByText(formatMessage(messages.confirm));
30-
fireEvent.click(confirmButton);
25+
it('calls onClose when confirmation button is clicked', async () => {
26+
renderWithIntl(<DemoAlert {...props} />);
27+
const user = userEvent.setup();
28+
const confirmButton = screen.getByText(messages.confirm.defaultMessage);
29+
await user.click(confirmButton);
3130
expect(props.onClose).toHaveBeenCalled();
3231
});
3332
});

src/components/FilePopoverContent/index.test.jsx

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
import { render } from '@testing-library/react';
2-
1+
import { screen } from '@testing-library/react';
32
import filesize from 'filesize';
3+
import { renderWithIntl } from '../../testUtils';
4+
45
import FilePopoverContent from '.';
56

67
jest.mock('filesize', () => (size) => `filesize(${size})`);
7-
jest.unmock('@openedx/paragon');
8-
jest.unmock('react');
98

109
describe('FilePopoverContent', () => {
1110
describe('component', () => {
@@ -18,23 +17,23 @@ describe('FilePopoverContent', () => {
1817

1918
describe('behavior', () => {
2019
it('renders file name correctly', () => {
21-
const { getByText } = render(<FilePopoverContent {...props} />);
22-
expect(getByText(props.name)).toBeInTheDocument();
20+
renderWithIntl(<FilePopoverContent {...props} />);
21+
expect(screen.getByText(props.name)).toBeInTheDocument();
2322
});
2423

2524
it('renders file description correctly', () => {
26-
const { getByText } = render(<FilePopoverContent {...props} />);
27-
expect(getByText(props.description)).toBeInTheDocument();
25+
renderWithIntl(<FilePopoverContent {...props} />);
26+
expect(screen.getByText(props.description)).toBeInTheDocument();
2827
});
2928

3029
it('renders file size correctly', () => {
31-
const { getByText } = render(<FilePopoverContent {...props} />);
32-
expect(getByText(filesize(props.size))).toBeInTheDocument();
30+
renderWithIntl(<FilePopoverContent {...props} />);
31+
expect(screen.getByText(filesize(props.size))).toBeInTheDocument();
3332
});
3433

3534
it('renders "Unknown" when size is null', () => {
36-
const { getByText } = render(<FilePopoverContent {...props} size={null} />);
37-
expect(getByText('Unknown')).toBeInTheDocument();
35+
renderWithIntl(<FilePopoverContent {...props} size={null} />);
36+
expect(screen.getByText('Unknown')).toBeInTheDocument();
3837
});
3938
});
4039
});

src/components/FilePreview/Banners/ErrorBanner.test.jsx

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
import { render, screen } from '@testing-library/react';
1+
import { screen } from '@testing-library/react';
2+
import { renderWithIntl } from '../../../testUtils';
23
import ErrorBanner from './ErrorBanner';
34
import messages from '../messages';
45

5-
jest.unmock('@openedx/paragon');
6-
jest.unmock('react');
7-
86
describe('Error Banner component', () => {
97
const children = <p>Abitary Child</p>;
108

@@ -27,25 +25,25 @@ describe('Error Banner component', () => {
2725

2826
describe('behavior', () => {
2927
it('renders children content', () => {
30-
render(<ErrorBanner {...props} />);
28+
renderWithIntl(<ErrorBanner {...props} />);
3129
const childText = screen.getByText('Abitary Child');
3230
expect(childText).toBeInTheDocument();
3331
});
3432

3533
it('renders the correct number of action buttons', () => {
36-
render(<ErrorBanner {...props} />);
37-
const buttons = screen.getAllByText('FormattedMessage');
38-
expect(buttons).toHaveLength(3);
34+
renderWithIntl(<ErrorBanner {...props} />);
35+
const buttons = screen.getAllByText(messages.retryButton.defaultMessage);
36+
expect(buttons).toHaveLength(2);
3937
});
4038

4139
it('renders error heading with correct message', () => {
42-
render(<ErrorBanner {...props} />);
43-
const heading = screen.getAllByText('FormattedMessage')[0];
40+
renderWithIntl(<ErrorBanner {...props} />);
41+
const heading = screen.getAllByText(messages.unknownError.defaultMessage)[0];
4442
expect(heading).toBeInTheDocument();
4543
});
4644

4745
it('renders with danger variant', () => {
48-
render(<ErrorBanner {...props} />);
46+
renderWithIntl(<ErrorBanner {...props} />);
4947
const alert = screen.getByRole('alert');
5048
expect(alert).toHaveClass('alert-danger');
5149
});

src/components/FilePreview/Banners/LoadingBanner.test.jsx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
import { render, screen } from '@testing-library/react';
22
import LoadingBanner from './LoadingBanner';
33

4-
jest.unmock('@openedx/paragon');
5-
jest.unmock('react');
6-
74
describe('Loading Banner component', () => {
85
describe('behavior', () => {
96
it('renders an info alert', () => {

src/components/FilePreview/BaseRenderers/ImageRenderer.test.jsx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@ import { render, screen } from '@testing-library/react';
33

44
import ImageRenderer from './ImageRenderer';
55

6-
jest.unmock('@openedx/paragon');
7-
jest.unmock('react');
8-
96
describe('Image Renderer Component', () => {
107
const props = {
118
url: 'some_url.jpg',

0 commit comments

Comments
 (0)