From 2e9b5b7e78163dcb49d50ebe8f8f1dec3e49f354 Mon Sep 17 00:00:00 2001 From: jacobo-dominguez-wgu Date: Fri, 13 Jun 2025 10:05:48 -0600 Subject: [PATCH] test: replacing snapshot tests with RTL tests part 3 (#2134) * test: replacing snapshot tests with rtl tests part 3 * test: addint alt text to icon buttons and test refactor --- .../TitleHeader/EditConfirmationButtons.jsx | 2 + .../EditConfirmationButtons.test.jsx | 19 - .../EditConfirmationButtons.test.tsx | 39 + .../EditConfirmationButtons.test.jsx.snap | 19 - .../components/TitleHeader/messages.js | 10 + .../components/Feedback/FeedbackControl.jsx | 55 +- .../Feedback/FeedbackControl.test.jsx | 30 - .../Feedback/FeedbackControl.test.tsx | 66 + .../FeedbackControl.test.jsx.snap | 40 - .../content/AdvanceTypeSelect.test.tsx | 84 +- .../AdvanceTypeSelect.test.tsx.snap | 1919 ----------------- .../SelectionModal/GalleryCard.test.jsx | 46 - .../SelectionModal/GalleryCard.test.tsx | 104 + .../__snapshots__/GalleryCard.test.jsx.snap | 505 ----- .../__snapshots__/index.test.jsx.snap | 49 - .../SourceCodeModal/index.jsx | 11 +- .../SourceCodeModal/index.test.jsx | 37 - .../SourceCodeModal/index.test.tsx | 40 + 18 files changed, 333 insertions(+), 2742 deletions(-) delete mode 100644 src/editors/containers/EditorContainer/components/TitleHeader/EditConfirmationButtons.test.jsx create mode 100644 src/editors/containers/EditorContainer/components/TitleHeader/EditConfirmationButtons.test.tsx delete mode 100644 src/editors/containers/EditorContainer/components/TitleHeader/__snapshots__/EditConfirmationButtons.test.jsx.snap delete mode 100644 src/editors/containers/ProblemEditor/components/EditProblemView/AnswerWidget/components/Feedback/FeedbackControl.test.jsx create mode 100644 src/editors/containers/ProblemEditor/components/EditProblemView/AnswerWidget/components/Feedback/FeedbackControl.test.tsx delete mode 100644 src/editors/containers/ProblemEditor/components/EditProblemView/AnswerWidget/components/Feedback/__snapshots__/FeedbackControl.test.jsx.snap delete mode 100644 src/editors/containers/ProblemEditor/components/SelectTypeModal/content/__snapshots__/AdvanceTypeSelect.test.tsx.snap delete mode 100644 src/editors/sharedComponents/SelectionModal/GalleryCard.test.jsx create mode 100644 src/editors/sharedComponents/SelectionModal/GalleryCard.test.tsx delete mode 100644 src/editors/sharedComponents/SelectionModal/__snapshots__/GalleryCard.test.jsx.snap delete mode 100644 src/editors/sharedComponents/SourceCodeModal/__snapshots__/index.test.jsx.snap delete mode 100644 src/editors/sharedComponents/SourceCodeModal/index.test.jsx create mode 100644 src/editors/sharedComponents/SourceCodeModal/index.test.tsx diff --git a/src/editors/containers/EditorContainer/components/TitleHeader/EditConfirmationButtons.jsx b/src/editors/containers/EditorContainer/components/TitleHeader/EditConfirmationButtons.jsx index 6b53531cf..81be615c4 100644 --- a/src/editors/containers/EditorContainer/components/TitleHeader/EditConfirmationButtons.jsx +++ b/src/editors/containers/EditorContainer/components/TitleHeader/EditConfirmationButtons.jsx @@ -17,6 +17,7 @@ const EditConfirmationButtons = ({ { - const props = { - intl: { formatMessage }, - updateTitle: jest.fn().mockName('args.updateTitle'), - cancelEdit: jest.fn().mockName('args.cancelEdit'), - }; - describe('snapshot', () => { - test('snapshot', () => { - expect(shallow().snapshot).toMatchSnapshot(); - }); - }); -}); diff --git a/src/editors/containers/EditorContainer/components/TitleHeader/EditConfirmationButtons.test.tsx b/src/editors/containers/EditorContainer/components/TitleHeader/EditConfirmationButtons.test.tsx new file mode 100644 index 000000000..7462fc8c3 --- /dev/null +++ b/src/editors/containers/EditorContainer/components/TitleHeader/EditConfirmationButtons.test.tsx @@ -0,0 +1,39 @@ +import React from 'react'; +import { + render, screen, fireEvent, initializeMocks, +} from '../../../../../testUtils'; +import EditConfirmationButtons from './EditConfirmationButtons'; + +describe('EditConfirmationButtons', () => { + beforeEach(() => { + initializeMocks(); + }); + + it('renders two IconButtonWithTooltip buttons', () => { + render( + , + ); + const cancelButton = screen.getByRole('button', { name: /cancel/i }); + expect(cancelButton).toBeInTheDocument(); + const saveButton = screen.getByRole('button', { name: /save/i }); + expect(saveButton).toBeInTheDocument(); + }); + + it('calls updateTitle when save button is clicked', () => { + const updateTitleMock = jest.fn(); + render( + , + ); + fireEvent.click(screen.getByRole('button', { name: /save/i })); + expect(updateTitleMock).toHaveBeenCalled(); + }); + + it('calls cancelEdit when cancel button is clicked', () => { + const cancelEditMock = jest.fn(); + render( + , + ); + fireEvent.click(screen.getByRole('button', { name: /cancel/i })); + expect(cancelEditMock).toHaveBeenCalled(); + }); +}); diff --git a/src/editors/containers/EditorContainer/components/TitleHeader/__snapshots__/EditConfirmationButtons.test.jsx.snap b/src/editors/containers/EditorContainer/components/TitleHeader/__snapshots__/EditConfirmationButtons.test.jsx.snap deleted file mode 100644 index 5ad61806c..000000000 --- a/src/editors/containers/EditorContainer/components/TitleHeader/__snapshots__/EditConfirmationButtons.test.jsx.snap +++ /dev/null @@ -1,19 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`EditConfirmationButtons snapshot snapshot 1`] = ` - - - - -`; diff --git a/src/editors/containers/EditorContainer/components/TitleHeader/messages.js b/src/editors/containers/EditorContainer/components/TitleHeader/messages.js index 0ffbffa7e..37702a9e0 100644 --- a/src/editors/containers/EditorContainer/components/TitleHeader/messages.js +++ b/src/editors/containers/EditorContainer/components/TitleHeader/messages.js @@ -27,11 +27,21 @@ const messages = defineMessages({ defaultMessage: 'Cancel', description: 'Screen reader label title for icon button to edit the xblock title', }, + cancelAltText: { + id: 'authoring.texteditor.header.cancelAltText', + defaultMessage: 'Cancel', + description: 'Alt text for icon button to cancel edit the xblock title', + }, saveTitleEdit: { id: 'authoring.texteditor.header.saveTitleEdit', defaultMessage: 'Save', description: 'Screen reader label title for icon button to edit the xblock title', }, + saveAltText: { + id: 'authoring.texteditor.header.saveAltText', + defaultMessage: 'Save', + description: 'Alt text for icon button to save edit the xblock title', + }, }); export default messages; diff --git a/src/editors/containers/ProblemEditor/components/EditProblemView/AnswerWidget/components/Feedback/FeedbackControl.jsx b/src/editors/containers/ProblemEditor/components/EditProblemView/AnswerWidget/components/Feedback/FeedbackControl.jsx index 4a84656ea..ac204ebbd 100644 --- a/src/editors/containers/ProblemEditor/components/EditProblemView/AnswerWidget/components/Feedback/FeedbackControl.jsx +++ b/src/editors/containers/ProblemEditor/components/EditProblemView/AnswerWidget/components/Feedback/FeedbackControl.jsx @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { FormattedMessage, intlShape } from '@edx/frontend-platform/i18n'; +import { FormattedMessage, useIntl } from '@edx/frontend-platform/i18n'; import { Form } from '@openedx/paragon'; import { answerOptionProps } from '../../../../../../../data/services/cms/types'; @@ -13,46 +13,47 @@ const FeedbackControl = ({ labelMessage, labelMessageBoldUnderline, answer, - intl, type, images, isLibrary, learningContextId, -}) => ( - - - , +}) => { + const intl = useIntl(); + return ( + + + , + }} + /> + + - - - -); + + ); +}; FeedbackControl.propTypes = { feedback: PropTypes.string.isRequired, onChange: PropTypes.func.isRequired, - labelMessage: PropTypes.string.isRequired, - labelMessageBoldUnderline: PropTypes.string.isRequired, + labelMessage: PropTypes.shape.isRequired, + labelMessageBoldUnderline: PropTypes.shape.isRequired, answer: answerOptionProps.isRequired, type: PropTypes.string.isRequired, images: PropTypes.shape({}).isRequired, learningContextId: PropTypes.string.isRequired, isLibrary: PropTypes.bool.isRequired, - intl: intlShape.isRequired, }; export default FeedbackControl; diff --git a/src/editors/containers/ProblemEditor/components/EditProblemView/AnswerWidget/components/Feedback/FeedbackControl.test.jsx b/src/editors/containers/ProblemEditor/components/EditProblemView/AnswerWidget/components/Feedback/FeedbackControl.test.jsx deleted file mode 100644 index 1dd77266e..000000000 --- a/src/editors/containers/ProblemEditor/components/EditProblemView/AnswerWidget/components/Feedback/FeedbackControl.test.jsx +++ /dev/null @@ -1,30 +0,0 @@ -import 'CourseAuthoring/editors/setupEditorTest'; -import { shallow } from '@edx/react-unit-test-utils'; -import FeedbackControl from './FeedbackControl'; - -const answerWithFeedback = { - id: 'A', - title: 'Answer 1', - correct: true, - selectedFeedback: 'some feedback', - unselectedFeedback: 'unselectedFeedback', -}; - -const props = { - answer: answerWithFeedback, - intl: { formatMessage: jest.fn() }, - setAnswer: jest.fn(), - feedback: 'feedback', - onChange: jest.fn(), - labelMessage: 'msg', - labelMessageBoldUnderline: 'msg', - images: {}, - isLibrary: false, - learningContextId: 'course+org+run', -}; - -describe('FeedbackControl component', () => { - test('renders', () => { - expect(shallow().snapshot).toMatchSnapshot(); - }); -}); diff --git a/src/editors/containers/ProblemEditor/components/EditProblemView/AnswerWidget/components/Feedback/FeedbackControl.test.tsx b/src/editors/containers/ProblemEditor/components/EditProblemView/AnswerWidget/components/Feedback/FeedbackControl.test.tsx new file mode 100644 index 000000000..b6959cf33 --- /dev/null +++ b/src/editors/containers/ProblemEditor/components/EditProblemView/AnswerWidget/components/Feedback/FeedbackControl.test.tsx @@ -0,0 +1,66 @@ +import React from 'react'; +import { + render, screen, fireEvent, initializeMocks, +} from '../../../../../../../../testUtils'; +import FeedbackControl from './FeedbackControl'; + +jest.mock('../../../../../../../sharedComponents/ExpandableTextArea', () => jest.fn(({ + id, value, setContent, placeholder, +}) => ( +