test: Replace calls to reverse('courseware')

We want to remove this page and URL endpoint so we're removing all the
references in the code that might point to this page.  It was replaced
by the sequences page in the Learning MFE years ago but the old pages
were never cleaned up. We are replacing the calls with the URL for the
courseware in the learning MFE.

See https://github.com/openedx/edx-platform/issues/35803 for more
details.
This commit is contained in:
Feanil Patel
2025-03-18 17:13:39 -04:00
parent 502a0d732e
commit d423775012
6 changed files with 25 additions and 16 deletions

View File

@@ -47,6 +47,7 @@ from openedx.core.djangoapps.content.course_overviews.tests.factories import Cou
from openedx.core.djangoapps.programs.tests.mixins import ProgramsApiConfigMixin
from openedx.core.djangoapps.site_configuration.tests.mixins import SiteMixin
from openedx.core.djangolib.testing.utils import CacheIsolationTestCase, skip_unless_lms
from openedx.features.course_experience.url_helpers import make_learning_mfe_courseware_url
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase, SharedModuleStoreTestCase # lint-amnesty, pylint: disable=wrong-import-order
from xmodule.modulestore.tests.factories import CourseFactory, check_mongo_calls # lint-amnesty, pylint: disable=wrong-import-order
from xmodule.data import CertificatesDisplayBehaviors # lint-amnesty, pylint: disable=wrong-import-order
@@ -907,15 +908,15 @@ class ChangeEnrollmentViewTest(ModuleStoreTestCase):
)
return response
@ddt.data(
(True, 'courseware'),
(False, None),
)
@ddt.unpack
def test_enrollment_url(self, waffle_flag_enabled, returned_view):
with override_waffle_switch(REDIRECT_TO_COURSEWARE_AFTER_ENROLLMENT, waffle_flag_enabled):
def test_enrollment_url_without_redirect(self):
with override_waffle_switch(REDIRECT_TO_COURSEWARE_AFTER_ENROLLMENT, False):
response = self._enroll_through_view(self.course)
data = reverse(returned_view, args=[str(self.course.id)]) if returned_view else ''
assert response.content.decode('utf8') == ''
def test_enrollment_with_redirect(self):
with override_waffle_switch(REDIRECT_TO_COURSEWARE_AFTER_ENROLLMENT, True):
response = self._enroll_through_view(self.course)
data = make_learning_mfe_courseware_url(self.course.id)
assert response.content.decode('utf8') == data
def test_enroll_as_default(self):

View File

@@ -62,6 +62,7 @@ from openedx.core.djangoapps.user_authn.toggles import (
)
from openedx.core.djangolib.markup import HTML, Text
from openedx.core.lib.api.authentication import BearerAuthenticationAllowInactiveUser
from openedx.features.course_experience.url_helpers import make_learning_mfe_courseware_url
from openedx.features.discounts.applicability import FIRST_PURCHASE_DISCOUNT_OVERRIDE_FLAG
from openedx.features.enterprise_support.utils import is_enterprise_learner
from common.djangoapps.student.email_helpers import generate_activation_email_context
@@ -408,7 +409,7 @@ def change_enrollment(request, check_access=True):
return HttpResponse(redirect_url)
if CourseEntitlement.check_for_existing_entitlement_and_enroll(user=user, course_run_key=course_id):
return HttpResponse(reverse('courseware', args=[str(course_id)]))
return HttpResponse(make_learning_mfe_courseware_url(course_id))
# Check that auto enrollment is allowed for this course
# (= the course is NOT behind a paywall)
@@ -438,7 +439,7 @@ def change_enrollment(request, check_access=True):
)
if should_redirect_to_courseware_after_enrollment():
return HttpResponse(reverse('courseware', args=[str(course_id)]))
return HttpResponse(make_learning_mfe_courseware_url(course_id))
else:
return HttpResponse()
elif action == "unenroll":

View File

@@ -4,7 +4,6 @@
import logging
from urllib.parse import urljoin
from django.urls import reverse
from edx_rest_framework_extensions.auth.jwt.authentication import JwtAuthentication
from opaque_keys import InvalidKeyError
from opaque_keys.edx.keys import CourseKey
@@ -24,6 +23,7 @@ from openedx.core.djangoapps.enrollments.api import add_enrollment
from openedx.core.djangoapps.enrollments.views import EnrollmentCrossDomainSessionAuth
from openedx.core.djangoapps.user_api.preferences.api import update_email_opt_in
from openedx.core.lib.api.authentication import BearerAuthenticationAllowInactiveUser
from openedx.features.course_experience.url_helpers import make_learning_mfe_courseware_url
from ...constants import Messages
from ...http import DetailResponse
@@ -122,7 +122,7 @@ class BasketsView(APIView):
if CourseEntitlement.check_for_existing_entitlement_and_enroll(user=user, course_run_key=course_key):
return JsonResponse(
{
'redirect_destination': reverse('courseware', args=[str(course_id)]),
'redirect_destination': make_learning_mfe_courseware_url(course_id),
},
)

View File

@@ -7,6 +7,7 @@ from unittest.mock import patch
from django.urls import reverse
from lms.djangoapps.courseware.tests.tests import LoginEnrollmentTestCase
from openedx.features.course_experience.url_helpers import make_learning_mfe_courseware_url
from openedx.features.enterprise_support.tests.mixins.enterprise import EnterpriseTestConsentRequired
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase # lint-amnesty, pylint: disable=wrong-import-order
from xmodule.modulestore.tests.factories import CourseFactory # lint-amnesty, pylint: disable=wrong-import-order
@@ -121,7 +122,7 @@ class WikiRedirectTestCase(EnterpriseTestConsentRequired, LoginEnrollmentTestCas
self.create_course_page(self.toy)
course_wiki_page = reverse('wiki:get', kwargs={'path': self.toy.wiki_slug + '/'})
referer = reverse("courseware", kwargs={'course_id': str(self.toy.id)})
referer = make_learning_mfe_courseware_url(self.toy.id)
resp = self.client.get(course_wiki_page, follow=True, HTTP_REFERER=referer)
@@ -141,7 +142,7 @@ class WikiRedirectTestCase(EnterpriseTestConsentRequired, LoginEnrollmentTestCas
self.login(self.student, self.password)
course_wiki_page = reverse('wiki:get', kwargs={'path': self.toy.wiki_slug + '/'})
referer = reverse("courseware", kwargs={'course_id': str(self.toy.id)})
referer = make_learning_mfe_courseware_url(self.toy.id)
# When not enrolled, we should get a 302
resp = self.client.get(course_wiki_page, follow=False, HTTP_REFERER=referer)
@@ -195,7 +196,7 @@ class WikiRedirectTestCase(EnterpriseTestConsentRequired, LoginEnrollmentTestCas
self.create_course_page(course)
course_wiki_page = reverse('wiki:get', kwargs={'path': course.wiki_slug + '/'})
referer = reverse("courseware", kwargs={'course_id': str(course.id)})
referer = make_learning_mfe_courseware_url(self.toy.id)
resp = self.client.get(course_wiki_page, follow=True, HTTP_REFERER=referer)
assert resp.status_code == 200

View File

@@ -7,11 +7,15 @@ from django.test import TestCase
from django.test.client import RequestFactory
from common.djangoapps.student.tests.factories import AnonymousUserFactory, UserFactory
from openedx.core.djangolib.testing.utils import skip_unless_lms
from ..middleware import UserTagsEventContextMiddleware
from ..tests.factories import UserCourseTagFactory
# This middleware only gets installed in the LMS so no need to test
# it in the CMS context.
@skip_unless_lms
class TagsMiddlewareTest(TestCase):
"""
Test the UserTagsEventContextMiddleware

View File

@@ -104,7 +104,9 @@ def default_course_url(course_key):
from .url_helpers import get_learning_mfe_home_url
if DISABLE_COURSE_OUTLINE_PAGE_FLAG.is_enabled(course_key):
return reverse('courseware', args=[str(course_key)])
# Prevent a circular dependency
from openedx.features.course_experience.url_helpers import make_learning_mfe_courseware_url
return make_learning_mfe_courseware_url(course_key)
return get_learning_mfe_home_url(course_key, url_fragment='home')