Commit 599de360 by Eric Fischer Committed by GitHub

Merge pull request #15881 from edx/efischer/EDU-1189

EDUCATOR-1189
parents 3aa02f29 5d446936
...@@ -31,13 +31,14 @@ def sync_cohort_with_mode(self, course_id, user_id, verified_cohort_name, defaul ...@@ -31,13 +31,14 @@ def sync_cohort_with_mode(self, course_id, user_id, verified_cohort_name, defaul
verified_cohort = get_cohort_by_name(course_key, verified_cohort_name) verified_cohort = get_cohort_by_name(course_key, verified_cohort_name)
if enrollment.mode == CourseMode.VERIFIED and (current_cohort.id != verified_cohort.id): acceptable_modes = {CourseMode.VERIFIED, CourseMode.CREDIT_MODE}
if enrollment.mode in acceptable_modes and (current_cohort.id != verified_cohort.id):
LOGGER.info( LOGGER.info(
"MOVING_TO_VERIFIED: Moving user '%s' to the verified cohort '%s' for course '%s'", "MOVING_TO_VERIFIED: Moving user '%s' to the verified cohort '%s' for course '%s'",
user.id, verified_cohort.name, course_id user.id, verified_cohort.name, course_id
) )
add_user_to_cohort(verified_cohort, user.username) add_user_to_cohort(verified_cohort, user.username)
elif enrollment.mode != CourseMode.VERIFIED and current_cohort.id == verified_cohort.id: elif enrollment.mode not in acceptable_modes and current_cohort.id == verified_cohort.id:
default_cohort = get_cohort_by_name(course_key, default_cohort_name) default_cohort = get_cohort_by_name(course_key, default_cohort_name)
LOGGER.info( LOGGER.info(
"MOVING_TO_DEFAULT: Moving user '%s' to the default cohort '%s' for course '%s'", "MOVING_TO_DEFAULT: Moving user '%s' to the default cohort '%s' for course '%s'",
......
...@@ -4,6 +4,7 @@ Tests for Verified Track Cohorting models ...@@ -4,6 +4,7 @@ Tests for Verified Track Cohorting models
# pylint: disable=attribute-defined-outside-init # pylint: disable=attribute-defined-outside-init
# pylint: disable=no-member # pylint: disable=no-member
import ddt
import mock import mock
from mock import patch from mock import patch
...@@ -70,6 +71,7 @@ class TestVerifiedTrackCohortedCourse(TestCase): ...@@ -70,6 +71,7 @@ class TestVerifiedTrackCohortedCourse(TestCase):
@skip_unless_lms @skip_unless_lms
@ddt.ddt
class TestMoveToVerified(SharedModuleStoreTestCase): class TestMoveToVerified(SharedModuleStoreTestCase):
""" Tests for the post-save listener. """ """ Tests for the post-save listener. """
...@@ -115,15 +117,15 @@ class TestMoveToVerified(SharedModuleStoreTestCase): ...@@ -115,15 +117,15 @@ class TestMoveToVerified(SharedModuleStoreTestCase):
""" Enroll self.user in self.course. """ """ Enroll self.user in self.course. """
self.enrollment = CourseEnrollmentFactory(course_id=self.course.id, user=self.user) self.enrollment = CourseEnrollmentFactory(course_id=self.course.id, user=self.user)
def _upgrade_to_verified(self): def _upgrade_enrollment(self, mode=CourseMode.VERIFIED):
""" Upgrade the default enrollment to verified. """ """ Upgrade the default enrollment to verified. """
self.enrollment.update_enrollment(mode=CourseMode.VERIFIED) self.enrollment.update_enrollment(mode=mode)
def _verify_no_automatic_cohorting(self): def _verify_no_automatic_cohorting(self):
""" Check that upgrading self.user to verified does not move them into a cohort. """ """ Check that upgrading self.user to verified does not move them into a cohort. """
self._enroll_in_course() self._enroll_in_course()
self.assertIsNone(get_cohort(self.user, self.course.id, assign=False)) self.assertIsNone(get_cohort(self.user, self.course.id, assign=False))
self._upgrade_to_verified() self._upgrade_enrollment()
self.assertIsNone(get_cohort(self.user, self.course.id, assign=False)) self.assertIsNone(get_cohort(self.user, self.course.id, assign=False))
self.assertEqual(0, self.mocked_celery_task.call_count) self.assertEqual(0, self.mocked_celery_task.call_count)
...@@ -181,7 +183,8 @@ class TestMoveToVerified(SharedModuleStoreTestCase): ...@@ -181,7 +183,8 @@ class TestMoveToVerified(SharedModuleStoreTestCase):
error_message = "cohort named '%s' does not exist" error_message = "cohort named '%s' does not exist"
self.assertIn(error_message, error_logger.call_args[0][0]) self.assertIn(error_message, error_logger.call_args[0][0])
def test_automatic_cohorting_enabled(self): @ddt.data(CourseMode.VERIFIED, CourseMode.CREDIT_MODE)
def test_automatic_cohorting_enabled(self, upgrade_mode):
""" """
If the VerifiedTrackCohortedCourse feature is enabled for a course (with course cohorting enabled If the VerifiedTrackCohortedCourse feature is enabled for a course (with course cohorting enabled
with an existing verified cohort), enrollment in the verified track automatically moves learners with an existing verified cohort), enrollment in the verified track automatically moves learners
...@@ -198,7 +201,7 @@ class TestMoveToVerified(SharedModuleStoreTestCase): ...@@ -198,7 +201,7 @@ class TestMoveToVerified(SharedModuleStoreTestCase):
self.assertEqual(2, self.mocked_celery_task.call_count) self.assertEqual(2, self.mocked_celery_task.call_count)
self.assertEqual(DEFAULT_COHORT_NAME, get_cohort(self.user, self.course.id, assign=False).name) self.assertEqual(DEFAULT_COHORT_NAME, get_cohort(self.user, self.course.id, assign=False).name)
self._upgrade_to_verified() self._upgrade_enrollment(upgrade_mode)
self.assertEqual(4, self.mocked_celery_task.call_count) self.assertEqual(4, self.mocked_celery_task.call_count)
self.assertEqual(DEFAULT_VERIFIED_COHORT_NAME, get_cohort(self.user, self.course.id, assign=False).name) self.assertEqual(DEFAULT_VERIFIED_COHORT_NAME, get_cohort(self.user, self.course.id, assign=False).name)
...@@ -219,7 +222,7 @@ class TestMoveToVerified(SharedModuleStoreTestCase): ...@@ -219,7 +222,7 @@ class TestMoveToVerified(SharedModuleStoreTestCase):
self._enroll_in_course() self._enroll_in_course()
self.assertIn(get_cohort(self.user, self.course.id, assign=False).name, ["Random 1", "Random 2"]) self.assertIn(get_cohort(self.user, self.course.id, assign=False).name, ["Random 1", "Random 2"])
self._upgrade_to_verified() self._upgrade_enrollment()
self.assertEqual(DEFAULT_VERIFIED_COHORT_NAME, get_cohort(self.user, self.course.id, assign=False).name) self.assertEqual(DEFAULT_VERIFIED_COHORT_NAME, get_cohort(self.user, self.course.id, assign=False).name)
self._unenroll() self._unenroll()
...@@ -236,7 +239,7 @@ class TestMoveToVerified(SharedModuleStoreTestCase): ...@@ -236,7 +239,7 @@ class TestMoveToVerified(SharedModuleStoreTestCase):
self._create_verified_cohort() self._create_verified_cohort()
self._enable_verified_track_cohorting() self._enable_verified_track_cohorting()
self._enroll_in_course() self._enroll_in_course()
self._upgrade_to_verified() self._upgrade_enrollment()
self.assertEqual(DEFAULT_VERIFIED_COHORT_NAME, get_cohort(self.user, self.course.id, assign=False).name) self.assertEqual(DEFAULT_VERIFIED_COHORT_NAME, get_cohort(self.user, self.course.id, assign=False).name)
# Un-enroll from the course and then re-enroll # Un-enroll from the course and then re-enroll
...@@ -244,7 +247,7 @@ class TestMoveToVerified(SharedModuleStoreTestCase): ...@@ -244,7 +247,7 @@ class TestMoveToVerified(SharedModuleStoreTestCase):
self.assertEqual(DEFAULT_VERIFIED_COHORT_NAME, get_cohort(self.user, self.course.id, assign=False).name) self.assertEqual(DEFAULT_VERIFIED_COHORT_NAME, get_cohort(self.user, self.course.id, assign=False).name)
self._reenroll() self._reenroll()
self.assertEqual(DEFAULT_COHORT_NAME, get_cohort(self.user, self.course.id, assign=False).name) self.assertEqual(DEFAULT_COHORT_NAME, get_cohort(self.user, self.course.id, assign=False).name)
self._upgrade_to_verified() self._upgrade_enrollment()
self.assertEqual(DEFAULT_VERIFIED_COHORT_NAME, get_cohort(self.user, self.course.id, assign=False).name) self.assertEqual(DEFAULT_VERIFIED_COHORT_NAME, get_cohort(self.user, self.course.id, assign=False).name)
def test_custom_verified_cohort_name(self): def test_custom_verified_cohort_name(self):
...@@ -256,7 +259,7 @@ class TestMoveToVerified(SharedModuleStoreTestCase): ...@@ -256,7 +259,7 @@ class TestMoveToVerified(SharedModuleStoreTestCase):
self._create_verified_cohort(name=custom_cohort_name) self._create_verified_cohort(name=custom_cohort_name)
self._enable_verified_track_cohorting(cohort_name=custom_cohort_name) self._enable_verified_track_cohorting(cohort_name=custom_cohort_name)
self._enroll_in_course() self._enroll_in_course()
self._upgrade_to_verified() self._upgrade_enrollment()
self.assertEqual(custom_cohort_name, get_cohort(self.user, self.course.id, assign=False).name) self.assertEqual(custom_cohort_name, get_cohort(self.user, self.course.id, assign=False).name)
def test_custom_default_cohort_name(self): def test_custom_default_cohort_name(self):
...@@ -271,7 +274,7 @@ class TestMoveToVerified(SharedModuleStoreTestCase): ...@@ -271,7 +274,7 @@ class TestMoveToVerified(SharedModuleStoreTestCase):
self._enable_verified_track_cohorting() self._enable_verified_track_cohorting()
self._enroll_in_course() self._enroll_in_course()
self.assertEqual(random_cohort_name, get_cohort(self.user, self.course.id, assign=False).name) self.assertEqual(random_cohort_name, get_cohort(self.user, self.course.id, assign=False).name)
self._upgrade_to_verified() self._upgrade_enrollment()
self.assertEqual(DEFAULT_VERIFIED_COHORT_NAME, get_cohort(self.user, self.course.id, assign=False).name) self.assertEqual(DEFAULT_VERIFIED_COHORT_NAME, get_cohort(self.user, self.course.id, assign=False).name)
# Un-enroll from the course. The learner stays in the verified cohort, but is no longer active. # Un-enroll from the course. The learner stays in the verified cohort, but is no longer active.
...@@ -286,5 +289,5 @@ class TestMoveToVerified(SharedModuleStoreTestCase): ...@@ -286,5 +289,5 @@ class TestMoveToVerified(SharedModuleStoreTestCase):
# Re-enroll in the course, which will downgrade the learner to audit. # Re-enroll in the course, which will downgrade the learner to audit.
self._reenroll() self._reenroll()
self.assertEqual(modified_cohort_name, get_cohort(self.user, self.course.id, assign=False).name) self.assertEqual(modified_cohort_name, get_cohort(self.user, self.course.id, assign=False).name)
self._upgrade_to_verified() self._upgrade_enrollment()
self.assertEqual(DEFAULT_VERIFIED_COHORT_NAME, get_cohort(self.user, self.course.id, assign=False).name) self.assertEqual(DEFAULT_VERIFIED_COHORT_NAME, get_cohort(self.user, self.course.id, assign=False).name)
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