Merge pull request #10215 from edx/ziafazal/SOL-1317

SOL-1317: check MILESTONES_APP also when checking prerequisite courses enabled
This commit is contained in:
Matt Drayer
2015-10-19 09:47:20 -04:00
6 changed files with 43 additions and 14 deletions

View File

@@ -24,6 +24,14 @@ def get_namespace_choices():
return NAMESPACE_CHOICES
def is_prerequisite_courses_enabled():
"""
Returns boolean indicating prerequisite courses enabled system wide or not.
"""
return settings.FEATURES.get('ENABLE_PREREQUISITE_COURSES', False) \
and settings.FEATURES.get('MILESTONES_APP', False)
def add_prerequisite_course(course_key, prerequisite_course_key):
"""
It would create a milestone, then it would set newly created
@@ -31,7 +39,7 @@ def add_prerequisite_course(course_key, prerequisite_course_key):
and it would set newly created milestone as fulfillment
milestone for course referred by `prerequisite_course_key`.
"""
if not settings.FEATURES.get('ENABLE_PREREQUISITE_COURSES', False):
if not is_prerequisite_courses_enabled():
return None
from milestones import api as milestones_api
milestone_name = _('Course {course_id} requires {prerequisite_course_id}').format(
@@ -55,7 +63,7 @@ def remove_prerequisite_course(course_key, milestone):
It would remove pre-requisite course milestone for course
referred by `course_key`.
"""
if not settings.FEATURES.get('ENABLE_PREREQUISITE_COURSES', False):
if not is_prerequisite_courses_enabled():
return None
from milestones import api as milestones_api
milestones_api.remove_course_milestone(
@@ -71,7 +79,7 @@ def set_prerequisite_courses(course_key, prerequisite_course_keys):
To only remove course milestones pass `course_key` and empty list or
None as `prerequisite_course_keys` .
"""
if not settings.FEATURES.get('ENABLE_PREREQUISITE_COURSES', False):
if not is_prerequisite_courses_enabled():
return None
from milestones import api as milestones_api
#remove any existing requirement milestones with this pre-requisite course as requirement
@@ -104,7 +112,7 @@ def get_pre_requisite_courses_not_completed(user, enrolled_courses): # pylint:
If a course has no incomplete prerequisites, it will be excluded from the
dictionary.
"""
if not settings.FEATURES.get('ENABLE_PREREQUISITE_COURSES', False):
if not is_prerequisite_courses_enabled():
return {}
from milestones import api as milestones_api
@@ -137,7 +145,7 @@ def get_prerequisite_courses_display(course_descriptor):
and course display name as `display` field.
"""
pre_requisite_courses = []
if settings.FEATURES.get('ENABLE_PREREQUISITE_COURSES', False) and course_descriptor.pre_requisite_courses:
if is_prerequisite_courses_enabled() and course_descriptor.pre_requisite_courses:
for course_id in course_descriptor.pre_requisite_courses:
course_key = CourseKey.from_string(course_id)
required_course_descriptor = modulestore().get_course(course_key)

View File

@@ -2,6 +2,7 @@
Tests for the milestones helpers library, which is the integration point for the edx_milestones API
"""
import ddt
from mock import patch
from milestones.exceptions import InvalidCourseKeyException, InvalidUserException
@@ -11,6 +12,7 @@ from xmodule.modulestore.tests.factories import CourseFactory
@patch.dict('django.conf.settings.FEATURES', {'MILESTONES_APP': False})
@ddt.ddt
class MilestonesHelpersTestCase(ModuleStoreTestCase):
"""
Main test suite for Milestones API client library
@@ -35,6 +37,24 @@ class MilestonesHelpersTestCase(ModuleStoreTestCase):
'description': 'Testing Milestones Helpers Library',
}
@ddt.data(
(False, False, False),
(True, False, False),
(False, True, False),
(True, True, True),
)
def test_pre_requisite_courses_enabled(self, feature_flags):
"""
Tests is_prerequisite_courses_enabled function with a set of possible values for
ENABLE_PREREQUISITE_COURSES and MILESTONES_APP feature flags.
"""
with patch.dict("django.conf.settings.FEATURES", {
'ENABLE_PREREQUISITE_COURSES': feature_flags[0],
'MILESTONES_APP': feature_flags[1]
}):
self.assertEqual(feature_flags[2], milestones_helpers.is_prerequisite_courses_enabled())
def test_add_milestone_returns_none_when_app_disabled(self):
response = milestones_helpers.add_milestone(milestone_data=self.milestone)
self.assertIsNone(response)