From 293dc9f4c3636f12d4b68b1ca0e83802731534b6 Mon Sep 17 00:00:00 2001 From: alangsto <46360176+alangsto@users.noreply.github.com> Date: Thu, 21 Jan 2021 14:54:18 -0500 Subject: [PATCH] Updated broken links (#346) updated tests added test --- src/course-home/data/api.js | 2 +- src/course-home/outline-tab/OutlineTab.test.jsx | 10 +++++++++- .../outline-tab/widgets/ProctoringInfoPanel.jsx | 5 +++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/course-home/data/api.js b/src/course-home/data/api.js index 031bb273..d3efe2b9 100644 --- a/src/course-home/data/api.js +++ b/src/course-home/data/api.js @@ -131,7 +131,7 @@ export async function getProgressTabData(courseId) { } export async function getProctoringInfoData(courseId) { - const url = `${getConfig().LMS_BASE_URL}/api/edx_proctoring/v1/user_onboarding/status?course_id=${courseId}`; + const url = `${getConfig().LMS_BASE_URL}/api/edx_proctoring/v1/user_onboarding/status?course_id=${encodeURIComponent(courseId)}`; try { const { data } = await getAuthenticatedHttpClient().get(url); return data; diff --git a/src/course-home/outline-tab/OutlineTab.test.jsx b/src/course-home/outline-tab/OutlineTab.test.jsx index bbfda389..b10539b0 100644 --- a/src/course-home/outline-tab/OutlineTab.test.jsx +++ b/src/course-home/outline-tab/OutlineTab.test.jsx @@ -25,7 +25,7 @@ describe('Outline Tab', () => { const enrollmentUrl = `${getConfig().LMS_BASE_URL}/api/enrollment/v1/enrollment`; const goalUrl = `${getConfig().LMS_BASE_URL}/api/course_home/v1/save_course_goal`; const outlineUrl = `${getConfig().LMS_BASE_URL}/api/course_home/v1/outline/${courseId}`; - const proctoringInfoUrl = `${getConfig().LMS_BASE_URL}/api/edx_proctoring/v1/user_onboarding/status?course_id=${courseId}`; + const proctoringInfoUrl = `${getConfig().LMS_BASE_URL}/api/edx_proctoring/v1/user_onboarding/status?course_id=${encodeURIComponent(courseId)}`; const store = initializeStore(); const defaultMetadata = Factory.build('courseHomeMetadata', { courseId }); @@ -499,6 +499,14 @@ describe('Outline Tab', () => { expect(screen.queryByRole('link', { name: 'Review instructions and system requirements' })).toBeInTheDocument(); }); + it('appears for no status', async () => { + axiosMock.onGet(proctoringInfoUrl).reply(200, { onboarding_status: '', onboarding_link: 'test' }); + await fetchAndRender(); + await screen.findByText('This course contains proctored exams'); + expect(screen.queryByRole('link', { name: 'Complete Onboarding' })).toBeInTheDocument(); + expect(screen.queryByRole('link', { name: 'Review instructions and system requirements' })).toBeInTheDocument(); + }); + it('does not appear for 404', async () => { axiosMock.onGet(proctoringInfoUrl).reply(404); expect(screen.queryByRole('link', { name: 'Review instructions and system requirements' })).not.toBeInTheDocument(); diff --git a/src/course-home/outline-tab/widgets/ProctoringInfoPanel.jsx b/src/course-home/outline-tab/widgets/ProctoringInfoPanel.jsx index 915bf100..16d3bb83 100644 --- a/src/course-home/outline-tab/widgets/ProctoringInfoPanel.jsx +++ b/src/course-home/outline-tab/widgets/ProctoringInfoPanel.jsx @@ -1,6 +1,7 @@ import React, { useState, useEffect } from 'react'; import PropTypes from 'prop-types'; +import { getConfig } from '@edx/frontend-platform'; import { injectIntl, intlShape } from '@edx/frontend-platform/i18n'; import { Button } from '@edx/paragon'; @@ -56,7 +57,7 @@ function ProctoringInfoPanel({ courseId, intl }) { return ( <> - { status && ( + { link && (

{intl.formatMessage(messages.proctoringInfoPanel)}

@@ -77,7 +78,7 @@ function ProctoringInfoPanel({ courseId, intl }) { )} {showExamLink(status) && ( - )}