Commit 111b7dff by cahrens

Don't return Credit as an EnrollmentTrack Group.

EDUCATOR-15
parent 3908512a
......@@ -30,7 +30,8 @@ class EnrollmentTrackUserPartition(UserPartition):
def groups(self):
"""
Return the groups (based on CourseModes) for the course associated with this
EnrollmentTrackUserPartition instance.
EnrollmentTrackUserPartition instance. Note that only groups based on selectable
CourseModes are returned (which means that Credit will never be returned).
If a course is using the Verified Track Cohorting pilot feature, this method
returns an empty array regardless of registered CourseModes.
......@@ -42,7 +43,7 @@ class EnrollmentTrackUserPartition(UserPartition):
return [
Group(ENROLLMENT_GROUP_IDS[mode.slug], unicode(mode.name))
for mode in CourseMode.modes_for_course(course_key, include_expired=True, only_selectable=False)
for mode in CourseMode.modes_for_course(course_key, include_expired=True)
]
def from_json(self):
......@@ -65,7 +66,8 @@ class EnrollmentTrackPartitionScheme(object):
def get_group_for_user(cls, course_key, user, user_partition, **kwargs): # pylint: disable=unused-argument
"""
Returns the Group from the specified user partition to which the user
is assigned, via enrollment mode.
is assigned, via enrollment mode. If a user is in a Credit mode, the Verified or
Professional mode for the course is returned instead.
If a course is using the Verified Track Cohorting pilot feature, this method
returns None regardless of the user's enrollment mode.
......@@ -88,6 +90,8 @@ class EnrollmentTrackPartitionScheme(object):
mode_slug,
modes=CourseMode.modes_for_course(course_key, include_expired=True, only_selectable=False),
)
if course_mode and CourseMode.is_credit_mode(course_mode):
course_mode = CourseMode.verified_mode_for_course(course_key)
if not course_mode:
course_mode = CourseMode.DEFAULT_MODE
return Group(ENROLLMENT_GROUP_IDS[course_mode.slug], unicode(course_mode.name))
......
......@@ -43,15 +43,15 @@ class EnrollmentTrackUserPartitionTest(SharedModuleStoreTestCase):
self.course, CourseMode.VERIFIED, "Verified Enrollment Track", min_price=1,
expiration_datetime=datetime.now(pytz.UTC) + timedelta(days=-1)
)
# Note that the credit mode is not selectable-- this is intentional.
# Note that the credit mode is not selectable-- this is intentional so we
# can test that it is filtered out.
create_mode(self.course, CourseMode.CREDIT_MODE, "Credit Mode", min_price=2)
partition = create_enrollment_track_partition(self.course)
groups = partition.groups
self.assertEqual(3, len(groups))
self.assertEqual(2, len(groups))
self.assertIsNotNone(self.get_group_by_name(partition, "Audit Enrollment Track"))
self.assertIsNotNone(self.get_group_by_name(partition, "Verified Enrollment Track"))
self.assertIsNotNone(self.get_group_by_name(partition, "Credit Mode"))
def test_to_json_supported(self):
user_partition_json = create_enrollment_track_partition(self.course).to_json()
......@@ -138,7 +138,13 @@ class EnrollmentTrackPartitionSchemeTest(SharedModuleStoreTestCase):
def test_enrolled_in_non_selectable(self):
create_mode(self.course, CourseMode.CREDIT_MODE, "Credit Enrollment Track", min_price=1)
CourseEnrollment.enroll(self.student, self.course.id, mode=CourseMode.CREDIT_MODE)
self.assertEqual("Credit Enrollment Track", self._get_user_group().name)
# The default mode is returned because Credit mode is filtered out, and no verified mode exists.
self.assertEqual("Audit", self._get_user_group().name)
# Now create a verified mode and check that it is returned for the learner enrolled in Credit.
create_mode(self.course, CourseMode.VERIFIED, "Verified Enrollment Track", min_price=1)
self.assertEqual("Verified Enrollment Track", self._get_user_group().name)
def test_using_verified_track_cohort(self):
VerifiedTrackCohortedCourse.objects.create(course_key=self.course.id, enabled=True).save()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment