From 90d6b18711e47dfb3c64952dbb1829a297d2db95 Mon Sep 17 00:00:00 2001 From: alangsto <46360176+alangsto@users.noreply.github.com> Date: Thu, 9 Jul 2020 10:13:18 -0400 Subject: [PATCH] Add link to exam settings page from studio (#24405) * testing * updates to drop down * unit tests. env changes were copied based on other MFEs in LMS * added exam settings link to other course settings pages * fixed pylint errors * updates for requested changes * updates for requested changes, as well as changes for xss linter --- .../views/tests/test_exam_settings_view.py | 72 +++++++++++++++++++ .../views/tests/test_header_menu.py | 28 ++++++++ cms/envs/common.py | 3 + cms/envs/test.py | 2 + cms/templates/certificates.html | 6 ++ cms/templates/group_configurations.html | 6 ++ cms/templates/settings.html | 6 ++ cms/templates/settings_advanced.html | 6 ++ cms/templates/settings_graders.html | 13 +++- cms/templates/widgets/header.html | 8 +++ 10 files changed, 147 insertions(+), 3 deletions(-) create mode 100644 cms/djangoapps/contentstore/views/tests/test_exam_settings_view.py diff --git a/cms/djangoapps/contentstore/views/tests/test_exam_settings_view.py b/cms/djangoapps/contentstore/views/tests/test_exam_settings_view.py new file mode 100644 index 0000000000..adca08d9ab --- /dev/null +++ b/cms/djangoapps/contentstore/views/tests/test_exam_settings_view.py @@ -0,0 +1,72 @@ +#-*- coding: utf-8 -*- + +""" +Exam Settings View Tests +""" + +import ddt + +from django.conf import settings +from django.test.utils import override_settings + +from contentstore.tests.utils import CourseTestCase +from contentstore.utils import reverse_course_url +from util.testing import UrlResetMixin + +FEATURES_WITH_CERTS_ENABLED = settings.FEATURES.copy() +FEATURES_WITH_CERTS_ENABLED['CERTIFICATES_HTML_VIEW'] = True + +FEATURES_WITH_EXAM_SETTINGS_ENABLED = FEATURES_WITH_CERTS_ENABLED.copy() +FEATURES_WITH_EXAM_SETTINGS_ENABLED['ENABLE_EXAM_SETTINGS_HTML_VIEW'] = True + +FEATURES_WITH_EXAM_SETTINGS_DISABLED = FEATURES_WITH_CERTS_ENABLED.copy() +FEATURES_WITH_EXAM_SETTINGS_DISABLED['ENABLE_EXAM_SETTINGS_HTML_VIEW'] = False + + +@ddt.ddt +class TestExamSettingsView(CourseTestCase, UrlResetMixin): + """ + Unit tests for the exam settings view. + """ + def setUp(self): + """ + Set up the for the exam settings view tests. + """ + super(TestExamSettingsView, self).setUp() + self.reset_urls() + + @override_settings(FEATURES=FEATURES_WITH_EXAM_SETTINGS_DISABLED) + @ddt.data( + "certificates_list_handler", + "settings_handler", + "group_configurations_list_handler", + "grading_handler", + "advanced_settings_handler" + ) + def test_view_without_exam_settings_enabled(self, handler): + """ + Tests pages should not have `Exam Settings` item + if course does not have the Exam Settings view enabled. + """ + outline_url = reverse_course_url(handler, self.course.id) + resp = self.client.get(outline_url, HTTP_ACCEPT='text/html') + self.assertEqual(resp.status_code, 200) + self.assertNotContains(resp, 'Proctored Exam Settings') + + @override_settings(FEATURES=FEATURES_WITH_EXAM_SETTINGS_ENABLED) + @ddt.data( + "certificates_list_handler", + "settings_handler", + "group_configurations_list_handler", + "grading_handler", + "advanced_settings_handler" + ) + def test_view_with_exam_settings_enabled(self, handler): + """ + Tests pages should have `Exam Settings` item + if course does have Exam Settings view enabled. + """ + outline_url = reverse_course_url(handler, self.course.id) + resp = self.client.get(outline_url, HTTP_ACCEPT='text/html') + self.assertEqual(resp.status_code, 200) + self.assertContains(resp, 'Proctored Exam Settings') diff --git a/cms/djangoapps/contentstore/views/tests/test_header_menu.py b/cms/djangoapps/contentstore/views/tests/test_header_menu.py index 1109327910..c2b00f3063 100644 --- a/cms/djangoapps/contentstore/views/tests/test_header_menu.py +++ b/cms/djangoapps/contentstore/views/tests/test_header_menu.py @@ -15,6 +15,12 @@ from util.testing import UrlResetMixin FEATURES_WITH_CERTS_ENABLED = settings.FEATURES.copy() FEATURES_WITH_CERTS_ENABLED['CERTIFICATES_HTML_VIEW'] = True +FEATURES_WITH_EXAM_SETTINGS_ENABLED = settings.FEATURES.copy() +FEATURES_WITH_EXAM_SETTINGS_ENABLED['ENABLE_EXAM_SETTINGS_HTML_VIEW'] = True + +FEATURES_WITH_EXAM_SETTINGS_DISABLED = settings.FEATURES.copy() +FEATURES_WITH_EXAM_SETTINGS_DISABLED['ENABLE_EXAM_SETTINGS_HTML_VIEW'] = False + @override_settings(FEATURES=FEATURES_WITH_CERTS_ENABLED) class TestHeaderMenu(CourseTestCase, UrlResetMixin): @@ -49,3 +55,25 @@ class TestHeaderMenu(CourseTestCase, UrlResetMixin): resp = self.client.get(outline_url, HTTP_ACCEPT='text/html') self.assertEqual(resp.status_code, 200) self.assertContains(resp, '