From 5e99a699bb519e459e502c0c7f577bdc8acfb275 Mon Sep 17 00:00:00 2001 From: Taimoor Ahmed Date: Fri, 10 Jul 2026 11:59:54 +0500 Subject: [PATCH] refactor: migrate enrollment API calls from v1 to v2 Migrates both enrollment call sites from /api/enrollment/v1/enrollment to /api/enrollment/v2/enrollment/ (trailing slash required by the v2 DRF DefaultRouter): - course-exit/data/api.js GET (list enrollments for recommendations) - alerts/enrollment-alert/data/api.js POST (enroll from outline alert) Test URL assertions updated accordingly in CourseExit.test.jsx and OutlineTab.test.jsx. Part of the FC-0118 API standardization (openedx/edx-platform). Closes openedx/frontend-app-learning#1936 Co-Authored-By: Claude Opus 4.7 --- src/alerts/enrollment-alert/data/api.js | 2 +- src/course-home/outline-tab/OutlineTab.test.jsx | 2 +- src/courseware/course/course-exit/CourseExit.test.jsx | 2 +- src/courseware/course/course-exit/data/api.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/alerts/enrollment-alert/data/api.js b/src/alerts/enrollment-alert/data/api.js index 2989bfbb3c..39f33837a1 100644 --- a/src/alerts/enrollment-alert/data/api.js +++ b/src/alerts/enrollment-alert/data/api.js @@ -3,7 +3,7 @@ import { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth'; import { getConfig } from '@edx/frontend-platform'; export async function postCourseEnrollment(courseId) { - const url = `${getConfig().LMS_BASE_URL}/api/enrollment/v1/enrollment`; + const url = `${getConfig().LMS_BASE_URL}/api/enrollment/v2/enrollment/`; const { data } = await getAuthenticatedHttpClient().post(url, { course_details: { course_id: courseId } }); return data; } diff --git a/src/course-home/outline-tab/OutlineTab.test.jsx b/src/course-home/outline-tab/OutlineTab.test.jsx index 26a0109238..27bed40de8 100644 --- a/src/course-home/outline-tab/OutlineTab.test.jsx +++ b/src/course-home/outline-tab/OutlineTab.test.jsx @@ -50,7 +50,7 @@ describe('Outline Tab', () => { const courseId = 'course-v1:edX+DemoX+Demo_Course'; let courseMetadataUrl = `${getConfig().LMS_BASE_URL}/api/course_home/course_metadata/${courseId}`; courseMetadataUrl = appendBrowserTimezoneToUrl(courseMetadataUrl); - const enrollmentUrl = `${getConfig().LMS_BASE_URL}/api/enrollment/v1/enrollment`; + const enrollmentUrl = `${getConfig().LMS_BASE_URL}/api/enrollment/v2/enrollment/`; const goalUrl = `${getConfig().LMS_BASE_URL}/api/course_home/save_course_goal`; const masqueradeUrl = `${getConfig().LMS_BASE_URL}/courses/${courseId}/masquerade`; const outlineUrl = `${getConfig().LMS_BASE_URL}/api/course_home/outline/${courseId}`; diff --git a/src/courseware/course/course-exit/CourseExit.test.jsx b/src/courseware/course/course-exit/CourseExit.test.jsx index d0a212da95..393045e74a 100644 --- a/src/courseware/course/course-exit/CourseExit.test.jsx +++ b/src/courseware/course/course-exit/CourseExit.test.jsx @@ -36,7 +36,7 @@ describe('Course Exit Pages', () => { coursewareMetadataUrl = appendBrowserTimezoneToUrl(coursewareMetadataUrl); const courseHomeMetadataUrl = appendBrowserTimezoneToUrl(`${getConfig().LMS_BASE_URL}/api/course_home/course_metadata/${courseId}`); const discoveryRecommendationsUrl = new RegExp(`${getConfig().DISCOVERY_API_BASE_URL}/api/v1/course_recommendations/*`); - const enrollmentsUrl = new RegExp(`${getConfig().LMS_BASE_URL}/api/enrollment/v1/enrollment*`); + const enrollmentsUrl = new RegExp(`${getConfig().LMS_BASE_URL}/api/enrollment/v2/enrollment*`); const learningSequencesUrlRegExp = new RegExp(`${getConfig().LMS_BASE_URL}/api/learning_sequences/v1/course_outline/*`); const now = new Date(); const tomorrow = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1); diff --git a/src/courseware/course/course-exit/data/api.js b/src/courseware/course/course-exit/data/api.js index d819db7288..0875b18445 100644 --- a/src/courseware/course/course-exit/data/api.js +++ b/src/courseware/course/course-exit/data/api.js @@ -29,7 +29,7 @@ export async function getCourseRecommendations(courseKey) { return []; } const recommendationsUrl = new URL(`${discoveryApiUrl}/api/v1/course_recommendations/${courseKey}?exclude_utm=true`); - const enrollmentsUrl = new URL(`${getConfig().LMS_BASE_URL}/api/enrollment/v1/enrollment`); + const enrollmentsUrl = new URL(`${getConfig().LMS_BASE_URL}/api/enrollment/v2/enrollment/`); const [recommendationsResponse, enrollmentsResponse] = await Promise.all([ getAuthenticatedHttpClient().get(recommendationsUrl), getAuthenticatedHttpClient().get(enrollmentsUrl),