diff --git a/src/constants.js b/src/constants.js
index 172f870691..98eeef2568 100644
--- a/src/constants.js
+++ b/src/constants.js
@@ -3,7 +3,10 @@ export const DECODE_ROUTES = {
HOME: '/course/:courseId/home',
LIVE: '/course/:courseId/live',
DATES: '/course/:courseId/dates',
- DISCUSSION: '/course/:courseId/discussion/:path/*',
+ DISCUSSION_ROUTES: [
+ '/course/:courseId/discussion/:path/*',
+ '/course/:courseId/discussion',
+ ],
PROGRESS: [
'/course/:courseId/progress/:targetUserId/',
'/course/:courseId/progress',
diff --git a/src/course-home/dates-tab/timeline/Timeline.jsx b/src/course-home/dates-tab/timeline/Timeline.jsx
index 09073d6fb7..0736d1a471 100644
--- a/src/course-home/dates-tab/timeline/Timeline.jsx
+++ b/src/course-home/dates-tab/timeline/Timeline.jsx
@@ -20,7 +20,7 @@ const Timeline = () => {
const now = new Date();
let foundNextDue = false;
let foundToday = false;
- courseDateBlocks.forEach(courseDateBlock => {
+ courseDateBlocks?.forEach(courseDateBlock => {
const dateInfo = { ...courseDateBlock };
const parsedDate = new Date(dateInfo.date);
diff --git a/src/course-home/discussion-tab/DiscussionTab.jsx b/src/course-home/discussion-tab/DiscussionTab.jsx
index 06ee97cc7c..22af7d22ff 100644
--- a/src/course-home/discussion-tab/DiscussionTab.jsx
+++ b/src/course-home/discussion-tab/DiscussionTab.jsx
@@ -1,33 +1,17 @@
import { getConfig } from '@edx/frontend-platform';
import { injectIntl } from '@edx/frontend-platform/i18n';
-import React, { useState } from 'react';
+import { useState } from 'react';
import { useSelector } from 'react-redux';
-import { useParams, generatePath, useNavigate } from 'react-router-dom';
-import { useIFrameHeight, useIFramePluginEvents } from '../../generic/hooks';
+import { useParams } from 'react-router-dom';
const DiscussionTab = () => {
const { courseId } = useSelector(state => state.courseHome);
const { path } = useParams();
const [originalPath] = useState(path);
- const navigate = useNavigate();
- const [, iFrameHeight] = useIFrameHeight();
- useIFramePluginEvents({
- 'discussions.navigate': (payload) => {
- const basePath = generatePath('/course/:courseId/discussion', { courseId });
- navigate(`${basePath}/${payload.path}`);
- },
- });
const discussionsUrl = `${getConfig().DISCUSSIONS_MFE_BASE_URL}/${courseId}/${originalPath}`;
- return (
-
- );
+ window.location.href = discussionsUrl;
+ return (<>>);
};
DiscussionTab.propTypes = {};
diff --git a/src/course-home/discussion-tab/DiscussionTab.test.jsx b/src/course-home/discussion-tab/DiscussionTab.test.jsx
index 9cd6b9e060..07bba0e293 100644
--- a/src/course-home/discussion-tab/DiscussionTab.test.jsx
+++ b/src/course-home/discussion-tab/DiscussionTab.test.jsx
@@ -6,15 +6,12 @@ import MockAdapter from 'axios-mock-adapter';
import React from 'react';
import { Route, Routes } from 'react-router-dom';
import { Factory } from 'rosie';
+import CoursewarePage from '@src/pages/courseware/components';
+import DecodePageRoute from '@src/decode-page-route';
+import { initializeMockApp, waitFor } from '@src/setupTest';
+import { appendBrowserTimezoneToUrl } from '@src/utils';
import { UserMessagesProvider } from '../../generic/user-messages';
-import {
- initializeMockApp, messageEvent, screen, waitFor,
-} from '../../setupTest';
import initializeStore from '../../store';
-import { TabContainer } from '../../tab-page';
-import { appendBrowserTimezoneToUrl } from '../../utils';
-import { fetchDiscussionTab } from '../data/thunks';
-import DiscussionTab from './DiscussionTab';
initializeMockApp();
jest.mock('@edx/frontend-platform/analytics');
@@ -22,45 +19,45 @@ jest.mock('@edx/frontend-platform/analytics');
describe('DiscussionTab', () => {
let axiosMock;
let store;
- let component;
+ let courseMetadataUrl;
+
+ const courseMetadata = Factory.build('courseHomeMetadata', { user_timezone: 'America/New_York' });
+ const { id: courseId } = courseMetadata;
beforeEach(() => {
axiosMock = new MockAdapter(getAuthenticatedHttpClient());
store = initializeStore();
- component = (
+
+ courseMetadataUrl = `${getConfig().LMS_BASE_URL}/api/course_home/course_metadata/${courseId}`;
+ courseMetadataUrl = appendBrowserTimezoneToUrl(courseMetadataUrl);
+
+ axiosMock.onGet(courseMetadataUrl).reply(200, courseMetadata);
+ history.push(`/course/${courseId}/discussion`); // so tab can pull course id from url
+
+ const component = (
+ {intl.formatMessage(messages.failure)} +
+ )} +