Don't return Credit as an EnrollmentTrack Group.

EDUCATOR-15
This commit is contained in:
cahrens
2017-04-25 15:40:22 -04:00
parent 3908512a0b
commit 111b7dffd7
2 changed files with 17 additions and 7 deletions

View File

@@ -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))

View File

@@ -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()