Skip to content

Commit ea827fa

Browse files
fix: fixed tests
1 parent ea5a4c8 commit ea827fa

4 files changed

Lines changed: 20 additions & 175 deletions

File tree

cms/djangoapps/contentstore/tests/test_contentstore.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1497,8 +1497,9 @@ def test_get_json(handler):
14971497
test_get_html('settings_handler')
14981498
with override_waffle_flag(toggles.LEGACY_STUDIO_GRADING, True):
14991499
test_get_html('grading_handler')
1500-
with override_waffle_flag(toggles.LEGACY_STUDIO_ADVANCED_SETTINGS, True):
1501-
test_get_html('advanced_settings_handler')
1500+
# advanced_settings_handler always redirects to MFE; just verify no 5xx
1501+
resp = self.client.get_html(get_url('advanced_settings_handler', course_key, 'course_key_string'))
1502+
self.assertIn(resp.status_code, [200, 302]) # noqa: PT009
15021503
test_get_json('textbooks_list_handler')
15031504

15041505
# Test that studio updates load

cms/djangoapps/contentstore/tests/test_course_settings.py

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -124,18 +124,16 @@ def setUp(self):
124124
CourseStaffRole(self.course.id).add_users(self.nonstaff)
125125

126126
@override_settings(FEATURES={'DISABLE_MOBILE_COURSE_AVAILABLE': True})
127-
@override_waffle_flag(toggles.LEGACY_STUDIO_ADVANCED_SETTINGS, True)
128127
def test_mobile_field_available(self):
129128

130129
"""
131130
Test to check `Mobile Course Available` field is not viewable in Studio
132131
when DISABLE_MOBILE_COURSE_AVAILABLE is true.
133132
"""
134133

135-
response = self.client.get_html(self.course_setting_url)
136-
start = response.content.decode('utf-8').find("mobile_available")
137-
end = response.content.decode('utf-8').find("}", start)
138-
settings_fields = json.loads(response.content.decode('utf-8')[start + len("mobile_available: "):end + 1])
134+
response = self.client.get(self.course_setting_url, HTTP_ACCEPT='application/json')
135+
data = json.loads(response.content.decode('utf-8'))
136+
settings_fields = data.get('mobile_available')
139137

140138
self.assertEqual(settings_fields["display_name"], "Mobile Course Available") # noqa: PT009
141139
self.assertEqual(settings_fields["deprecated"], True) # noqa: PT009
@@ -147,7 +145,6 @@ def test_mobile_field_available(self):
147145
(False, True, True)
148146
)
149147
@ddt.unpack
150-
@override_waffle_flag(toggles.LEGACY_STUDIO_ADVANCED_SETTINGS, True)
151148
def test_discussion_fields_available(self, is_pages_and_resources_enabled,
152149
is_legacy_discussion_setting_enabled, fields_visible):
153150
"""
@@ -156,14 +153,14 @@ def test_discussion_fields_available(self, is_pages_and_resources_enabled,
156153

157154
with override_waffle_flag(ENABLE_PAGES_AND_RESOURCES_MICROFRONTEND, is_pages_and_resources_enabled):
158155
with override_waffle_flag(OVERRIDE_DISCUSSION_LEGACY_SETTINGS_FLAG, is_legacy_discussion_setting_enabled):
159-
response = self.client.get_html(self.course_setting_url).content.decode('utf-8')
160-
self.assertEqual('allow_anonymous' in response, fields_visible) # noqa: PT009
161-
self.assertEqual('allow_anonymous_to_peers' in response, fields_visible) # noqa: PT009
162-
self.assertEqual('discussion_blackouts' in response, fields_visible) # noqa: PT009
163-
self.assertEqual('discussion_topics' in response, fields_visible) # noqa: PT009
156+
response = self.client.get(self.course_setting_url, HTTP_ACCEPT='application/json')
157+
data = json.loads(response.content.decode('utf-8'))
158+
self.assertEqual('allow_anonymous' in data, fields_visible) # noqa: PT009
159+
self.assertEqual('allow_anonymous_to_peers' in data, fields_visible) # noqa: PT009
160+
self.assertEqual('discussion_blackouts' in data, fields_visible) # noqa: PT009
161+
self.assertEqual('discussion_topics' in data, fields_visible) # noqa: PT009
164162

165163
@ddt.data(False, True)
166-
@override_waffle_flag(toggles.LEGACY_STUDIO_ADVANCED_SETTINGS, True)
167164
@override_waffle_flag(toggles.LEGACY_STUDIO_IMPORT, True)
168165
@override_waffle_flag(toggles.LEGACY_STUDIO_EXPORT, True)
169166
@override_waffle_flag(toggles.LEGACY_STUDIO_COURSE_TEAM, True)
@@ -205,11 +202,11 @@ def test_disable_advanced_settings_feature(self, disable_advanced_settings):
205202

206203
# Test that non-staff users can't access the "Advanced Settings" page.
207204
response = self.non_staff_client.get_html(self.course_setting_url)
208-
self.assertEqual(response.status_code, 403 if disable_advanced_settings else 200) # noqa: PT009
205+
self.assertEqual(response.status_code, 403 if disable_advanced_settings else 302) # noqa: PT009
209206

210-
# Test that staff users can access the "Advanced Settings" page.
207+
# Test that staff users are redirected to the MFE advanced settings page.
211208
response = self.client.get_html(self.course_setting_url)
212-
self.assertEqual(response.status_code, 200) # noqa: PT009
209+
self.assertEqual(response.status_code, 302) # noqa: PT009
213210

214211

215212
@ddt.ddt

cms/djangoapps/contentstore/utils.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
libraries_v1_enabled,
4242
libraries_v2_enabled,
4343
split_library_view_on_dashboard,
44-
use_new_advanced_settings_page,
4544
use_new_certificates_page,
4645
use_new_course_team_page,
4746
use_new_export_page,
@@ -317,13 +316,10 @@ def get_advanced_settings_url(course_locator) -> str:
317316
"""
318317
Gets course authoring microfrontend URL for advanced settings page view.
319318
"""
320-
advanced_settings_url = None
321-
if use_new_advanced_settings_page(course_locator):
322-
mfe_base_url = get_course_authoring_url(course_locator)
323-
course_mfe_url = f'{mfe_base_url}/course/{course_locator}/settings/advanced'
324-
if mfe_base_url:
325-
advanced_settings_url = course_mfe_url
326-
return advanced_settings_url
319+
mfe_base_url = get_course_authoring_url(course_locator)
320+
if mfe_base_url:
321+
return f'{mfe_base_url}/course/{course_locator}/settings/advanced'
322+
return ''
327323

328324

329325
def get_grading_url(course_locator) -> str:
Lines changed: 1 addition & 150 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
"""
22
Exam Settings View Tests
33
"""
4-
from unittest import SkipTest
5-
from unittest.mock import patch
6-
74
import ddt
85
import lxml
96
from django.conf import settings
@@ -12,7 +9,7 @@
129

1310
from cms.djangoapps.contentstore import toggles
1411
from cms.djangoapps.contentstore.tests.utils import CourseTestCase
15-
from cms.djangoapps.contentstore.utils import get_proctored_exam_settings_url, reverse_course_url
12+
from cms.djangoapps.contentstore.utils import reverse_course_url
1613
from common.djangoapps.util.testing import UrlResetMixin
1714

1815

@@ -55,7 +52,6 @@ def _get_exam_settings_alert_text(raw_html_content):
5552
"settings_handler",
5653
"group_configurations_list_handler",
5754
"grading_handler",
58-
"advanced_settings_handler"
5955
)
6056
def test_view_without_exam_settings_enabled(self, handler):
6157
"""
@@ -72,7 +68,6 @@ def test_view_without_exam_settings_enabled(self, handler):
7268
"settings_handler",
7369
"group_configurations_list_handler",
7470
"grading_handler",
75-
"advanced_settings_handler"
7671
)
7772
def test_view_with_exam_settings_enabled(self, handler):
7873
"""
@@ -84,147 +79,3 @@ def test_view_with_exam_settings_enabled(self, handler):
8479
self.assertEqual(resp.status_code, 200) # noqa: PT009
8580
self.assertContains(resp, 'Proctored Exam Settings')
8681

87-
@override_settings(
88-
PROCTORING_BACKENDS={
89-
'DEFAULT': 'test_proctoring_provider',
90-
'test_proctoring_provider': {"requires_escalation_email": True}
91-
},
92-
)
93-
@ddt.data(
94-
"advanced_settings_handler",
95-
)
96-
def test_exam_settings_alert_with_exam_settings_enabled(self, page_handler):
97-
"""
98-
An alert should appear if current exam settings are invalid.
99-
The exam settings alert should direct users to the exam settings page.
100-
"""
101-
# create an error by setting 'requires_escalation_email' as 'True' and not setting
102-
# the (required) escalation contact
103-
self.course.proctoring_provider = 'test_proctoring_provider'
104-
self.course.enable_proctored_exams = True
105-
self.save_course()
106-
107-
# course_handler raise 404 for old mongo course
108-
if self.course.id.deprecated:
109-
raise SkipTest("course_handler raise 404 for old mongo course")
110-
111-
url = reverse_course_url(page_handler, self.course.id)
112-
resp = self.client.get(url, HTTP_ACCEPT='text/html')
113-
alert_text = self._get_exam_settings_alert_text(resp.content)
114-
assert (
115-
'This course has proctored exam settings that are incomplete or invalid.'
116-
in alert_text
117-
)
118-
assert (
119-
'To update these settings go to the Proctored Exam Settings page.'
120-
in alert_text
121-
)
122-
123-
@override_settings(
124-
PROCTORING_BACKENDS={
125-
'DEFAULT': 'test_proctoring_provider',
126-
'test_proctoring_provider': {"requires_escalation_email": True}
127-
},
128-
)
129-
@ddt.data(
130-
"advanced_settings_handler",
131-
)
132-
@override_waffle_flag(toggles.LEGACY_STUDIO_EXAM_SETTINGS, True)
133-
def test_exam_settings_alert_with_exam_settings_disabled(self, page_handler):
134-
"""
135-
An alert should appear if current exam settings are invalid.
136-
The exam settings alert should direct users to the advanced settings page
137-
if the exam settings feature is not available.
138-
"""
139-
# create an error by setting 'requires_escalation_email' as 'True' and not setting
140-
# the (required) escalation contact
141-
self.course.proctoring_provider = 'test_proctoring_provider'
142-
self.course.enable_proctored_exams = True
143-
self.save_course()
144-
145-
# course_handler raise 404 for old mongo course
146-
if self.course.id.deprecated and page_handler == 'course_handler':
147-
raise SkipTest("course_handler raise 404 for old mongo course")
148-
url = reverse_course_url(page_handler, self.course.id)
149-
resp = self.client.get(url, HTTP_ACCEPT='text/html')
150-
alert_text = self._get_exam_settings_alert_text(resp.content)
151-
assert (
152-
'This course has proctored exam settings that are incomplete or invalid.'
153-
in alert_text
154-
)
155-
self.maxDiff = None
156-
if page_handler == 'advanced_settings_handler':
157-
assert (
158-
'You will be unable to make changes until the following settings are updated on the page below.'
159-
in alert_text
160-
)
161-
else:
162-
assert 'To update these settings go to the Advanced Settings page.' in alert_text
163-
164-
@override_settings(
165-
PROCTORING_BACKENDS={
166-
'DEFAULT': 'test_proctoring_provider',
167-
'test_proctoring_provider': {},
168-
},
169-
)
170-
@ddt.data(
171-
"advanced_settings_handler",
172-
)
173-
def test_invalid_provider_alert(self, page_handler):
174-
"""
175-
An alert should appear if the course has a proctoring provider that is not valid.
176-
"""
177-
# create an error by setting an invalid proctoring provider
178-
self.course.proctoring_provider = 'invalid_provider'
179-
self.course.enable_proctored_exams = True
180-
self.save_course()
181-
182-
url = reverse_course_url(page_handler, self.course.id)
183-
resp = self.client.get(url, HTTP_ACCEPT='text/html')
184-
alert_text = self._get_exam_settings_alert_text(resp.content)
185-
assert (
186-
'This course has proctored exam settings that are incomplete or invalid.'
187-
in alert_text
188-
)
189-
assert (
190-
'The proctoring provider configured for this course, \'invalid_provider\', is not valid.'
191-
in alert_text
192-
)
193-
194-
@ddt.data(
195-
"advanced_settings_handler",
196-
)
197-
def test_exam_settings_alert_not_shown(self, page_handler):
198-
"""
199-
Alert should not be visible if no proctored exam setting error exists
200-
"""
201-
# course_handler raise 404 for old mongo course
202-
if self.course.id.deprecated and page_handler == 'course_handler':
203-
raise SkipTest("course_handler raise 404 for old mongo course")
204-
url = reverse_course_url(page_handler, self.course.id)
205-
resp = self.client.get(url, HTTP_ACCEPT='text/html')
206-
parsed_html = lxml.html.fromstring(resp.content)
207-
alert_nodes = parsed_html.find_class('exam-settings-alert')
208-
assert len(alert_nodes) == 0
209-
210-
@patch('cms.djangoapps.models.settings.course_metadata.CourseMetadata.validate_proctoring_settings')
211-
def test_proctoring_link_is_visible(self, mock_validate_proctoring_settings):
212-
213-
"""
214-
Test to check proctored exam settings mfe url is rendering properly
215-
"""
216-
mock_validate_proctoring_settings.return_value = [
217-
{
218-
'key': 'proctoring_provider',
219-
'message': 'error message',
220-
'model': {'display_name': 'proctoring_provider'}
221-
},
222-
{
223-
'key': 'proctoring_provider',
224-
'message': 'error message',
225-
'model': {'display_name': 'proctoring_provider'}
226-
}
227-
]
228-
response = self.client.get_html(reverse_course_url('advanced_settings_handler', self.course.id))
229-
proctored_exam_settings_url = get_proctored_exam_settings_url(self.course.id)
230-
self.assertContains(response, proctored_exam_settings_url, 3)

0 commit comments

Comments
 (0)