Commit 111b7dff by cahrens

Don't return Credit as an EnrollmentTrack Group.

EDUCATOR-15
parent 3908512a
...@@ -30,7 +30,8 @@ class EnrollmentTrackUserPartition(UserPartition): ...@@ -30,7 +30,8 @@ class EnrollmentTrackUserPartition(UserPartition):
def groups(self): def groups(self):
""" """
Return the groups (based on CourseModes) for the course associated with this 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 If a course is using the Verified Track Cohorting pilot feature, this method
returns an empty array regardless of registered CourseModes. returns an empty array regardless of registered CourseModes.
...@@ -42,7 +43,7 @@ class EnrollmentTrackUserPartition(UserPartition): ...@@ -42,7 +43,7 @@ class EnrollmentTrackUserPartition(UserPartition):
return [ return [
Group(ENROLLMENT_GROUP_IDS[mode.slug], unicode(mode.name)) 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): def from_json(self):
...@@ -65,7 +66,8 @@ class EnrollmentTrackPartitionScheme(object): ...@@ -65,7 +66,8 @@ class EnrollmentTrackPartitionScheme(object):
def get_group_for_user(cls, course_key, user, user_partition, **kwargs): # pylint: disable=unused-argument 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 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 If a course is using the Verified Track Cohorting pilot feature, this method
returns None regardless of the user's enrollment mode. returns None regardless of the user's enrollment mode.
...@@ -88,6 +90,8 @@ class EnrollmentTrackPartitionScheme(object): ...@@ -88,6 +90,8 @@ class EnrollmentTrackPartitionScheme(object):
mode_slug, mode_slug,
modes=CourseMode.modes_for_course(course_key, include_expired=True, only_selectable=False), 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: if not course_mode:
course_mode = CourseMode.DEFAULT_MODE course_mode = CourseMode.DEFAULT_MODE
return Group(ENROLLMENT_GROUP_IDS[course_mode.slug], unicode(course_mode.name)) return Group(ENROLLMENT_GROUP_IDS[course_mode.slug], unicode(course_mode.name))
......
...@@ -43,15 +43,15 @@ class EnrollmentTrackUserPartitionTest(SharedModuleStoreTestCase): ...@@ -43,15 +43,15 @@ class EnrollmentTrackUserPartitionTest(SharedModuleStoreTestCase):
self.course, CourseMode.VERIFIED, "Verified Enrollment Track", min_price=1, self.course, CourseMode.VERIFIED, "Verified Enrollment Track", min_price=1,
expiration_datetime=datetime.now(pytz.UTC) + timedelta(days=-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) create_mode(self.course, CourseMode.CREDIT_MODE, "Credit Mode", min_price=2)
partition = create_enrollment_track_partition(self.course) partition = create_enrollment_track_partition(self.course)
groups = partition.groups 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, "Audit Enrollment Track"))
self.assertIsNotNone(self.get_group_by_name(partition, "Verified 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): def test_to_json_supported(self):
user_partition_json = create_enrollment_track_partition(self.course).to_json() user_partition_json = create_enrollment_track_partition(self.course).to_json()
...@@ -138,7 +138,13 @@ class EnrollmentTrackPartitionSchemeTest(SharedModuleStoreTestCase): ...@@ -138,7 +138,13 @@ class EnrollmentTrackPartitionSchemeTest(SharedModuleStoreTestCase):
def test_enrolled_in_non_selectable(self): def test_enrolled_in_non_selectable(self):
create_mode(self.course, CourseMode.CREDIT_MODE, "Credit Enrollment Track", min_price=1) create_mode(self.course, CourseMode.CREDIT_MODE, "Credit Enrollment Track", min_price=1)
CourseEnrollment.enroll(self.student, self.course.id, mode=CourseMode.CREDIT_MODE) 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): def test_using_verified_track_cohort(self):
VerifiedTrackCohortedCourse.objects.create(course_key=self.course.id, enabled=True).save() 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