From ac03594943d4a28104ca2bb0bba1aefb0742f96e Mon Sep 17 00:00:00 2001 From: Victor Navarro Date: Tue, 2 Sep 2025 09:46:50 -0600 Subject: [PATCH] test: deprecate react-unit-test-utils part-8 (#444) * test: deprecate react-unit-test-utils part-8 * test: change fireEvent to userEvent * test: rebase fixes * test: change fireEvent to userEvent * test: fixes and adress review * test: improve description test --------- Co-authored-by: diana-villalvazo-wgu --- src/components/ConfirmModal.test.jsx | 13 +- src/components/FilePreview/FileInfo.test.jsx | 9 +- .../CriterionFeedback.test.jsx | 26 +-- .../__snapshots__/index.test.jsx.snap | 18 -- .../StartGradingButton/index.test.jsx | 154 +++++++++++++---- .../ReviewModal/ReviewContent.test.jsx | 107 +++++++----- .../ReviewErrors/DownloadErrors.test.jsx | 148 ++++++++++------ .../DownloadErrors.test.jsx.snap | 59 ------- .../__snapshots__/ReviewContent.test.jsx.snap | 56 ------ .../__snapshots__/index.test.jsx.snap | 72 -------- .../CloseReviewConfirmModal.test.jsx | 53 ++++-- .../CloseReviewConfirmModal.test.jsx.snap | 25 --- src/containers/ReviewModal/index.test.jsx | 159 +++++++++++++----- 13 files changed, 462 insertions(+), 437 deletions(-) delete mode 100644 src/containers/ReviewActions/components/StartGradingButton/__snapshots__/index.test.jsx.snap delete mode 100644 src/containers/ReviewModal/ReviewErrors/__snapshots__/DownloadErrors.test.jsx.snap delete mode 100644 src/containers/ReviewModal/__snapshots__/ReviewContent.test.jsx.snap delete mode 100644 src/containers/ReviewModal/__snapshots__/index.test.jsx.snap delete mode 100644 src/containers/ReviewModal/components/__snapshots__/CloseReviewConfirmModal.test.jsx.snap diff --git a/src/components/ConfirmModal.test.jsx b/src/components/ConfirmModal.test.jsx index 1ccce7b..b85118a 100644 --- a/src/components/ConfirmModal.test.jsx +++ b/src/components/ConfirmModal.test.jsx @@ -1,4 +1,5 @@ -import { render, screen, fireEvent } from '@testing-library/react'; +import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; import { ConfirmModal } from './ConfirmModal'; jest.unmock('@openedx/paragon'); @@ -29,15 +30,17 @@ describe('ConfirmModal', () => { expect(getByText(props.content)).toBeInTheDocument(); }); - it('should call onCancel when cancel button is clicked', () => { + it('should call onCancel when cancel button is clicked', async () => { render(); - fireEvent.click(screen.getByText(props.cancelText)); + const user = userEvent.setup(); + await user.click(screen.getByText(props.cancelText)); expect(props.onCancel).toHaveBeenCalledTimes(1); }); - it('should call onConfirm when confirm button is clicked', () => { + it('should call onConfirm when confirm button is clicked', async () => { render(); - fireEvent.click(screen.getByText(props.confirmText)); + const user = userEvent.setup(); + await user.click(screen.getByText(props.confirmText)); expect(props.onConfirm).toHaveBeenCalledTimes(1); }); }); diff --git a/src/components/FilePreview/FileInfo.test.jsx b/src/components/FilePreview/FileInfo.test.jsx index 1fa500f..c0f7d36 100644 --- a/src/components/FilePreview/FileInfo.test.jsx +++ b/src/components/FilePreview/FileInfo.test.jsx @@ -1,4 +1,5 @@ -import { render, screen, fireEvent } from '@testing-library/react'; +import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; import FileInfo from './FileInfo'; @@ -20,10 +21,10 @@ describe('FileInfo component', () => { expect(screen.getByText('FormattedMessage')).toBeInTheDocument(); }); - it('calls onClick when button is clicked', () => { + it('calls onClick when button is clicked', async () => { render({children}); - - fireEvent.click(screen.getByText('FormattedMessage')); + const user = userEvent.setup(); + await user.click(screen.getByText('FormattedMessage')); expect(props.onClick).toHaveBeenCalledTimes(1); }); }); diff --git a/src/containers/CriterionContainer/CriterionFeedback.test.jsx b/src/containers/CriterionContainer/CriterionFeedback.test.jsx index ac4ab11..7deae08 100644 --- a/src/containers/CriterionContainer/CriterionFeedback.test.jsx +++ b/src/containers/CriterionContainer/CriterionFeedback.test.jsx @@ -1,5 +1,6 @@ import React from 'react'; -import { render, fireEvent } from '@testing-library/react'; +import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; import { actions, selectors } from 'data/redux'; import { @@ -49,26 +50,26 @@ describe('Criterion Feedback', () => { describe('component', () => { describe('render', () => { it('shows a non-disabled input when grading', () => { - const { getByTestId } = render(); - const input = getByTestId('criterion-feedback-input'); + render(); + const input = screen.getByTestId('criterion-feedback-input'); expect(input).toBeInTheDocument(); expect(input).not.toBeDisabled(); expect(input).toHaveValue(props.value); }); it('shows a disabled input when not grading', () => { - const { getByTestId } = render( + render( , ); - const input = getByTestId('criterion-feedback-input'); + const input = screen.getByTestId('criterion-feedback-input'); expect(input).toBeInTheDocument(); expect(input).toBeDisabled(); expect(input).toHaveValue(props.value); }); it('displays an error message when feedback is invalid', () => { - const { getByTestId } = render(); - expect(getByTestId('criterion-feedback-error-msg')).toBeInTheDocument(); + render(); + expect(screen.getByTestId('criterion-feedback-error-msg')).toBeInTheDocument(); }); it('does not render anything when config is set to disabled', () => { @@ -80,12 +81,13 @@ describe('Criterion Feedback', () => { }); describe('behavior', () => { - it('calls setValue when input value changes', () => { - const { getByTestId } = render(); - const input = getByTestId('criterion-feedback-input'); - fireEvent.change(input, { target: { value: 'some value' } }); + it('calls setValue when input value changes', async () => { + render(); + const user = userEvent.setup(); + const input = screen.getByTestId('criterion-feedback-input'); + await user.clear(input); expect(props.setValue).toHaveBeenCalledWith({ - value: 'some value', + value: '', orderNum: props.orderNum, }); }); diff --git a/src/containers/ReviewActions/components/StartGradingButton/__snapshots__/index.test.jsx.snap b/src/containers/ReviewActions/components/StartGradingButton/__snapshots__/index.test.jsx.snap deleted file mode 100644 index 9f58d4f..0000000 --- a/src/containers/ReviewActions/components/StartGradingButton/__snapshots__/index.test.jsx.snap +++ /dev/null @@ -1,18 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`StartGradingButton component component snapshots hide: renders empty component if hook.hide is true 1`] = `null`; - -exports[`StartGradingButton component component snapshots smoke test: forwards props to components from hooks 1`] = ` - -