diff --git a/src/courseware/course/Course.test.jsx b/src/courseware/course/Course.test.jsx index ea11ef2d..2b0faca5 100644 --- a/src/courseware/course/Course.test.jsx +++ b/src/courseware/course/Course.test.jsx @@ -57,21 +57,6 @@ describe('Course', () => { jest.spyOn(console, 'warn').mockImplementation(() => {}); jest.spyOn(console, 'error').mockImplementation(() => {}); - // Mock media queries, because `Celebration` modal uses `react-break` for responsive breakpoints. - Object.defineProperty(window, 'matchMedia', { - writable: true, - value: jest.fn().mockImplementation(query => ({ - matches: false, - media: query, - onchange: null, - addListener: jest.fn(), // deprecated - removeListener: jest.fn(), // deprecated - addEventListener: jest.fn(), - removeEventListener: jest.fn(), - dispatchEvent: jest.fn(), - })), - }); - const courseMetadata = Factory.build('courseMetadata', { celebrations: { firstSection: true } }); const testStore = await initializeTestStore({ courseMetadata }, false); const { courseware, models } = testStore.getState(); diff --git a/src/courseware/course/course-exit/CourseCelebration.jsx b/src/courseware/course/course-exit/CourseCelebration.jsx index 87173516..2b099724 100644 --- a/src/courseware/course/course-exit/CourseCelebration.jsx +++ b/src/courseware/course/course-exit/CourseCelebration.jsx @@ -5,8 +5,7 @@ import { } from '@edx/frontend-platform/i18n'; import { layoutGenerator } from 'react-break'; import { Helmet } from 'react-helmet'; -import { useDispatch } from 'react-redux'; -import { useParams } from 'react-router-dom'; +import { useDispatch, useSelector } from 'react-redux'; import { LinkedinIcon } from 'react-share'; import { Alert, Button, Hyperlink } from '@edx/paragon'; import { getConfig } from '@edx/frontend-platform'; @@ -32,7 +31,7 @@ function CourseCelebration({ intl }) { const OnMobile = layout.is('mobile'); const OnAtLeastTablet = layout.isAtLeast('tablet'); - const { courseId } = useParams(); + const { courseId } = useSelector(state => state.courseware); const dispatch = useDispatch(); const { certificateData, @@ -95,14 +94,16 @@ function CourseCelebration({ intl }) { case 'downloadable': title = intl.formatMessage(messages.certificateHeaderDownloadable); message = ( - +

+ +

); if (certWebViewUrl) { buttonLocation = `${getConfig().LMS_BASE_URL}${certWebViewUrl}`; @@ -117,7 +118,7 @@ function CourseCelebration({ intl }) { title = intl.formatMessage(messages.certificateHeaderNotAvailable); message = ( <> -
+

-

-
+

+

-

+

); break; @@ -141,7 +142,7 @@ function CourseCelebration({ intl }) { case 'requesting': buttonText = intl.formatMessage(messages.requestCertificateButton); title = intl.formatMessage(messages.certificateHeaderRequestable); - message = intl.formatMessage(messages.requestCertificateBodyText); + message = (

{intl.formatMessage(messages.requestCertificateBodyText)}

); break; case 'unverified': buttonText = intl.formatMessage(messages.verifyIdentityButton); @@ -149,12 +150,14 @@ function CourseCelebration({ intl }) { title = intl.formatMessage(messages.certificateHeaderUnverified); // todo: check for idVerificationSupportLink null message = ( - +

+ +

); break; default: @@ -194,7 +197,7 @@ function CourseCelebration({ intl }) {
{title}
-

{message}

+ {message} {/* The requesting status needs a different button because it does a POST instead of a GET */} {certStatus === 'requesting' && (