diff --git a/cms/djangoapps/contentstore/tests/test_course_settings.py b/cms/djangoapps/contentstore/tests/test_course_settings.py
index 57a9718cf5..94ec075468 100644
--- a/cms/djangoapps/contentstore/tests/test_course_settings.py
+++ b/cms/djangoapps/contentstore/tests/test_course_settings.py
@@ -133,7 +133,11 @@ class CourseDetailsTestCase(CourseTestCase):
def test_marketing_site_fetch(self):
settings_details_url = get_url(self.course.id)
- with mock.patch.dict('django.conf.settings.FEATURES', {'ENABLE_MKTG_SITE': True}):
+ with mock.patch.dict('django.conf.settings.FEATURES', {
+ 'ENABLE_MKTG_SITE': True,
+ 'ENTRANCE_EXAMS': False,
+ 'ENABLE_PREREQUISITE_COURSES': False
+ }):
response = self.client.get_html(settings_details_url)
self.assertNotContains(response, "Course Summary Page")
self.assertNotContains(response, "Send a note to students via email")
@@ -280,6 +284,7 @@ class CourseDetailsTestCase(CourseTestCase):
self.assertContains(response, "Requirements")
+@ddt.ddt
class CourseDetailsViewTest(CourseTestCase):
"""
Tests for modifying content on the first course settings page (course dates, overview, etc.).
@@ -410,6 +415,28 @@ class CourseDetailsViewTest(CourseTestCase):
response = self.client.ajax_post(url, course_detail_json)
self.assertEqual(400, response.status_code)
+ @ddt.data(
+ (False, False, False),
+ (True, False, True),
+ (False, True, False),
+ (True, True, True),
+ )
+ def test_visibility_of_entrance_exam_section(self, feature_flags):
+ """
+ Tests entrance exam section is available if ENTRANCE_EXAMS feature is enabled no matter any other
+ feature is enabled or disabled i.e ENABLE_MKTG_SITE.
+ """
+ with patch.dict("django.conf.settings.FEATURES", {
+ 'ENTRANCE_EXAMS': feature_flags[0],
+ 'ENABLE_MKTG_SITE': feature_flags[1]
+ }):
+ course_details_url = get_url(self.course.id)
+ resp = self.client.get_html(course_details_url)
+ self.assertEqual(
+ feature_flags[2],
+ '
' in resp.content
+ )
+
@ddt.ddt
class CourseGradingTest(CourseTestCase):
diff --git a/cms/djangoapps/contentstore/views/course.py b/cms/djangoapps/contentstore/views/course.py
index e45783398a..e381c73aad 100644
--- a/cms/djangoapps/contentstore/views/course.py
+++ b/cms/djangoapps/contentstore/views/course.py
@@ -67,7 +67,8 @@ from contentstore.tasks import rerun_course
from contentstore.views.entrance_exam import (
create_entrance_exam,
update_entrance_exam,
- delete_entrance_exam
+ delete_entrance_exam,
+ is_entrance_exams_enabled
)
from .library import LIBRARIES_ENABLED
@@ -927,7 +928,8 @@ def settings_handler(request, course_key_string):
'is_credit_course': False,
'show_min_grade_warning': False,
'enrollment_end_editable': enrollment_end_editable,
- 'is_prerequisite_courses_enabled': is_prerequisite_courses_enabled()
+ 'is_prerequisite_courses_enabled': is_prerequisite_courses_enabled(),
+ 'is_entrance_exams_enabled': is_entrance_exams_enabled()
}
if is_prerequisite_courses_enabled():
courses, in_process_course_actions = get_courses_accessible_to_user(request)
diff --git a/cms/djangoapps/contentstore/views/entrance_exam.py b/cms/djangoapps/contentstore/views/entrance_exam.py
index 320ce3df3a..1e297101f0 100644
--- a/cms/djangoapps/contentstore/views/entrance_exam.py
+++ b/cms/djangoapps/contentstore/views/entrance_exam.py
@@ -54,6 +54,13 @@ def check_feature_enabled(feature_name):
return _check_feature_enabled
+def is_entrance_exams_enabled():
+ """
+ Returns a boolean indicating entrance exam feature is enable or not.
+ """
+ return settings.FEATURES.get('ENTRANCE_EXAMS', False)
+
+
@login_required
@ensure_csrf_cookie
@check_feature_enabled(feature_name='ENTRANCE_EXAMS')
diff --git a/cms/templates/settings.html b/cms/templates/settings.html
index 62ebbfc8de..c54d944228 100644
--- a/cms/templates/settings.html
+++ b/cms/templates/settings.html
@@ -361,7 +361,7 @@ CMS.URL.UPLOAD_ASSET = '${upload_asset_url}';
- % if about_page_editable:
+ % if about_page_editable or is_prerequisite_courses_enabled or is_entrance_exams_enabled: