Skip to content

Commit 8029185

Browse files
authored
Merge pull request #36430 from openedx/feanil/update_courseware_links
feanil/update courseware links
2 parents 502a0d7 + cdf2603 commit 8029185

7 files changed

Lines changed: 30 additions & 21 deletions

File tree

common/djangoapps/student/tests/tests.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
from openedx.core.djangoapps.programs.tests.mixins import ProgramsApiConfigMixin
4848
from openedx.core.djangoapps.site_configuration.tests.mixins import SiteMixin
4949
from openedx.core.djangolib.testing.utils import CacheIsolationTestCase, skip_unless_lms
50+
from openedx.features.course_experience.url_helpers import make_learning_mfe_courseware_url
5051
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase, SharedModuleStoreTestCase # lint-amnesty, pylint: disable=wrong-import-order
5152
from xmodule.modulestore.tests.factories import CourseFactory, check_mongo_calls # lint-amnesty, pylint: disable=wrong-import-order
5253
from xmodule.data import CertificatesDisplayBehaviors # lint-amnesty, pylint: disable=wrong-import-order
@@ -907,15 +908,15 @@ def _enroll_through_view(self, course):
907908
)
908909
return response
909910

910-
@ddt.data(
911-
(True, 'courseware'),
912-
(False, None),
913-
)
914-
@ddt.unpack
915-
def test_enrollment_url(self, waffle_flag_enabled, returned_view):
916-
with override_waffle_switch(REDIRECT_TO_COURSEWARE_AFTER_ENROLLMENT, waffle_flag_enabled):
911+
def test_enrollment_url_without_redirect(self):
912+
with override_waffle_switch(REDIRECT_TO_COURSEWARE_AFTER_ENROLLMENT, False):
913+
response = self._enroll_through_view(self.course)
914+
assert response.content.decode('utf8') == ''
915+
916+
def test_enrollment_with_redirect(self):
917+
with override_waffle_switch(REDIRECT_TO_COURSEWARE_AFTER_ENROLLMENT, True):
917918
response = self._enroll_through_view(self.course)
918-
data = reverse(returned_view, args=[str(self.course.id)]) if returned_view else ''
919+
data = make_learning_mfe_courseware_url(self.course.id)
919920
assert response.content.decode('utf8') == data
920921

921922
def test_enroll_as_default(self):

common/djangoapps/student/views/management.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
)
6363
from openedx.core.djangolib.markup import HTML, Text
6464
from openedx.core.lib.api.authentication import BearerAuthenticationAllowInactiveUser
65+
from openedx.features.course_experience.url_helpers import make_learning_mfe_courseware_url
6566
from openedx.features.discounts.applicability import FIRST_PURCHASE_DISCOUNT_OVERRIDE_FLAG
6667
from openedx.features.enterprise_support.utils import is_enterprise_learner
6768
from common.djangoapps.student.email_helpers import generate_activation_email_context
@@ -408,7 +409,7 @@ def change_enrollment(request, check_access=True):
408409
return HttpResponse(redirect_url)
409410

410411
if CourseEntitlement.check_for_existing_entitlement_and_enroll(user=user, course_run_key=course_id):
411-
return HttpResponse(reverse('courseware', args=[str(course_id)]))
412+
return HttpResponse(make_learning_mfe_courseware_url(course_id))
412413

413414
# Check that auto enrollment is allowed for this course
414415
# (= the course is NOT behind a paywall)
@@ -438,7 +439,7 @@ def change_enrollment(request, check_access=True):
438439
)
439440

440441
if should_redirect_to_courseware_after_enrollment():
441-
return HttpResponse(reverse('courseware', args=[str(course_id)]))
442+
return HttpResponse(make_learning_mfe_courseware_url(course_id))
442443
else:
443444
return HttpResponse()
444445
elif action == "unenroll":

lms/djangoapps/commerce/api/v0/views.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import logging
55
from urllib.parse import urljoin
66

7-
from django.urls import reverse
87
from edx_rest_framework_extensions.auth.jwt.authentication import JwtAuthentication
98
from opaque_keys import InvalidKeyError
109
from opaque_keys.edx.keys import CourseKey
@@ -24,6 +23,7 @@
2423
from openedx.core.djangoapps.enrollments.views import EnrollmentCrossDomainSessionAuth
2524
from openedx.core.djangoapps.user_api.preferences.api import update_email_opt_in
2625
from openedx.core.lib.api.authentication import BearerAuthenticationAllowInactiveUser
26+
from openedx.features.course_experience.url_helpers import make_learning_mfe_courseware_url
2727

2828
from ...constants import Messages
2929
from ...http import DetailResponse
@@ -122,7 +122,7 @@ def post(self, request, *args, **kwargs): # lint-amnesty, pylint: disable=unuse
122122
if CourseEntitlement.check_for_existing_entitlement_and_enroll(user=user, course_run_key=course_key):
123123
return JsonResponse(
124124
{
125-
'redirect_destination': reverse('courseware', args=[str(course_id)]),
125+
'redirect_destination': make_learning_mfe_courseware_url(course_id),
126126
},
127127
)
128128

lms/djangoapps/course_wiki/tests/tests.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from django.urls import reverse
88

99
from lms.djangoapps.courseware.tests.tests import LoginEnrollmentTestCase
10+
from openedx.features.course_experience.url_helpers import make_learning_mfe_courseware_url
1011
from openedx.features.enterprise_support.tests.mixins.enterprise import EnterpriseTestConsentRequired
1112
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase # lint-amnesty, pylint: disable=wrong-import-order
1213
from xmodule.modulestore.tests.factories import CourseFactory # lint-amnesty, pylint: disable=wrong-import-order
@@ -121,7 +122,7 @@ def test_course_navigator(self):
121122
self.create_course_page(self.toy)
122123

123124
course_wiki_page = reverse('wiki:get', kwargs={'path': self.toy.wiki_slug + '/'})
124-
referer = reverse("courseware", kwargs={'course_id': str(self.toy.id)})
125+
referer = make_learning_mfe_courseware_url(self.toy.id)
125126

126127
resp = self.client.get(course_wiki_page, follow=True, HTTP_REFERER=referer)
127128

@@ -141,7 +142,7 @@ def test_wiki_not_accessible_when_not_enrolled(self):
141142

142143
self.login(self.student, self.password)
143144
course_wiki_page = reverse('wiki:get', kwargs={'path': self.toy.wiki_slug + '/'})
144-
referer = reverse("courseware", kwargs={'course_id': str(self.toy.id)})
145+
referer = make_learning_mfe_courseware_url(self.toy.id)
145146

146147
# When not enrolled, we should get a 302
147148
resp = self.client.get(course_wiki_page, follow=False, HTTP_REFERER=referer)
@@ -195,7 +196,7 @@ def test_create_wiki_with_long_course_id(self):
195196
self.create_course_page(course)
196197

197198
course_wiki_page = reverse('wiki:get', kwargs={'path': course.wiki_slug + '/'})
198-
referer = reverse("courseware", kwargs={'course_id': str(course.id)})
199+
referer = make_learning_mfe_courseware_url(self.toy.id)
199200

200201
resp = self.client.get(course_wiki_page, follow=True, HTTP_REFERER=referer)
201202
assert resp.status_code == 200

lms/djangoapps/courseware/tests/test_navigation.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from common.djangoapps.student.tests.factories import GlobalStaffFactory
1818
from lms.djangoapps.courseware.tests.helpers import LoginEnrollmentTestCase, set_preview_mode
1919
from openedx.features.course_experience import DISABLE_COURSE_OUTLINE_PAGE_FLAG
20+
from openedx.features.course_experience.url_helpers import make_learning_mfe_courseware_url
2021

2122

2223
@set_preview_mode(True)
@@ -111,7 +112,7 @@ def test_chrome_settings(self):
111112
assert ('course-navigation' in response.content.decode('utf-8')) == accordion
112113

113114
self.assertTabInactive('progress', response)
114-
self.assertTabActive('courseware', response)
115+
self.assertTabActive(make_learning_mfe_courseware_url(self.course.id), response)
115116

116117
response = self.client.get(reverse('courseware_section', kwargs={
117118
'course_id': str(self.course.id),
@@ -120,7 +121,7 @@ def test_chrome_settings(self):
120121
}))
121122

122123
self.assertTabActive('progress', response)
123-
self.assertTabInactive('courseware', response)
124+
self.assertTabInactive(make_learning_mfe_courseware_url(self.course.id), response)
124125

125126
@override_settings(SESSION_INACTIVITY_TIMEOUT_IN_SECONDS=1)
126127
def test_inactive_session_timeout(self):

openedx/core/djangoapps/user_api/tests/test_middleware.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,18 @@
55
from django.http import HttpResponse
66
from django.test import TestCase
77
from django.test.client import RequestFactory
8+
from django.urls import reverse
89

910
from common.djangoapps.student.tests.factories import AnonymousUserFactory, UserFactory
11+
from openedx.core.djangolib.testing.utils import skip_unless_lms
1012

1113
from ..middleware import UserTagsEventContextMiddleware
1214
from ..tests.factories import UserCourseTagFactory
1315

1416

17+
# This middleware only gets installed in the LMS so no need to test
18+
# it in the CMS context.
19+
@skip_unless_lms
1520
class TagsMiddlewareTest(TestCase):
1621
"""
1722
Test the UserTagsEventContextMiddleware
@@ -25,9 +30,7 @@ def setUp(self):
2530
self.course_id = 'mock/course/id'
2631
self.request_factory = RequestFactory()
2732

28-
# TODO: Make it so we can use reverse. Appears to fail depending on the order in which tests are run
29-
#self.request = RequestFactory().get(reverse('courseware', kwargs={'course_id': self.course_id}))
30-
self.request = RequestFactory().get(f'/courses/{self.course_id}/courseware')
33+
self.request = RequestFactory().get(reverse('progress', kwargs={'course_id': self.course_id}))
3134
self.request.user = self.user
3235

3336
self.response = Mock(spec=HttpResponse)

openedx/features/course_experience/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,9 @@ def default_course_url(course_key):
104104
from .url_helpers import get_learning_mfe_home_url
105105

106106
if DISABLE_COURSE_OUTLINE_PAGE_FLAG.is_enabled(course_key):
107-
return reverse('courseware', args=[str(course_key)])
107+
# Prevent a circular dependency
108+
from openedx.features.course_experience.url_helpers import make_learning_mfe_courseware_url
109+
return make_learning_mfe_courseware_url(course_key)
108110

109111
return get_learning_mfe_home_url(course_key, url_fragment='home')
110112

0 commit comments

Comments
 (0)