diff --git a/src/course-home/outline-tab/OutlineTab.jsx b/src/course-home/outline-tab/OutlineTab.jsx
index db33f55fc5..0172644a23 100644
--- a/src/course-home/outline-tab/OutlineTab.jsx
+++ b/src/course-home/outline-tab/OutlineTab.jsx
@@ -5,6 +5,7 @@ import { sendTrackEvent } from '@edx/frontend-platform/analytics';
import { getAuthenticatedUser } from '@edx/frontend-platform/auth';
import { useIntl } from '@edx/frontend-platform/i18n';
import { Button } from '@openedx/paragon';
+import { FeedbackModal, useProgressStatus } from '@edunext/frontend-essentials';
import { CourseOutlineTabNotificationsSlot } from '../../plugin-slots/CourseOutlineTabNotificationsSlot';
import { AlertList } from '../../generic/user-messages';
@@ -116,6 +117,8 @@ const OutlineTab = () => {
}
}, [location.search]);
+ const { isComplete, isGraded, isPassing } = useProgressStatus(courseId);
+
return (
<>
@@ -186,6 +189,7 @@ const OutlineTab = () => {
)}
+
>
);
diff --git a/src/course-home/outline-tab/OutlineTab.test.jsx b/src/course-home/outline-tab/OutlineTab.test.jsx
index 39852568b7..2c0ff6d124 100644
--- a/src/course-home/outline-tab/OutlineTab.test.jsx
+++ b/src/course-home/outline-tab/OutlineTab.test.jsx
@@ -55,6 +55,7 @@ describe('Outline Tab', () => {
const masqueradeUrl = `${getConfig().LMS_BASE_URL}/courses/${courseId}/masquerade`;
const outlineUrl = `${getConfig().LMS_BASE_URL}/api/course_home/outline/${courseId}`;
const proctoringInfoUrl = `${getConfig().EXAMS_BASE_URL}/api/v1/student/course_id/${encodeURIComponent(courseId)}/onboarding?username=MockUser`;
+ const progressUrl = `${getConfig().LMS_BASE_URL}/api/course_home/progress/${courseId}`;
const store = initializeStore();
const defaultMetadata = Factory.build('courseHomeMetadata');
@@ -94,6 +95,9 @@ describe('Outline Tab', () => {
onboarding_link: 'test',
expiration_date: null,
});
+ // This will return 404 in order to set the failure behavior and don't set extra
+ // extra conditions required by the success path.
+ axiosMock.onGet(progressUrl).reply(404, {});
// Mock courseware search params
mockSearchParams();
diff --git a/src/product-tours/ProductTours.test.jsx b/src/product-tours/ProductTours.test.jsx
index e65292de31..cf4f725396 100644
--- a/src/product-tours/ProductTours.test.jsx
+++ b/src/product-tours/ProductTours.test.jsx
@@ -43,6 +43,7 @@ describe('Course Home Tours', () => {
const outlineUrl = `${getConfig().LMS_BASE_URL}/api/course_home/outline/${courseId}`;
const tourDataUrl = `${getConfig().LMS_BASE_URL}/api/user_tours/v1/MockUser`;
const proctoringUrl = `${getConfig().LMS_BASE_URL}/api/edx_proctoring/v1/user_onboarding/status?is_learning_mfe=true&course_id=course-v1%3AedX%2BTest%2Brun&username=MockUser`;
+ const progressUrl = `${getConfig().LMS_BASE_URL}/api/course_home/progress/${courseId}`;
const store = initializeStore();
const defaultTabData = Factory.build('outlineTabData');
@@ -80,6 +81,9 @@ describe('Course Home Tours', () => {
course_home_tour_status: 'no-tour',
show_courseware_tour: false,
});
+ // This will return 404 in order to set the failure behavior and don't set extra
+ // extra conditions required by the success path.
+ axiosMock.onGet(progressUrl).reply(404, {});
logUnhandledRequests(axiosMock);
});