def request_add_users_to_cohort(self, users_string, cohort, course, should_raise_404=False): """ Call `add_users_to_cohort` for a given cohort, course, and list of users, returning its response as a dict. When `should_raise_404` is True, verify that the request raised a Http404. """ request = RequestFactory().post("dummy_url", {"users": users_string}) request.user = self.staff_user if should_raise_404: self.assertRaises( Http404, lambda: add_users_to_cohort(request, course.id.to_deprecated_string(), cohort.id) ) else: response = add_users_to_cohort(request, course.id.to_deprecated_string(), cohort.id) self.assertEqual(response.status_code, 200) return json.loads(response.content)
def check_request(self, users_string, expected_added=None, expected_changed=None, expected_present=None, expected_unknown=None): """ Check that add_users_to_cohort returns the expected result and has the expected side effects. The given users will be added to cohort1. users_string is the string input entered by the client expected_added is a list of users expected_changed is a list of (user, previous_cohort) tuples expected_present is a list of (user, email/username) tuples where email/username corresponds to the input expected_unknown is a list of strings corresponding to the input """ expected_added = expected_added or [] expected_changed = expected_changed or [] expected_present = expected_present or [] expected_unknown = expected_unknown or [] request = RequestFactory().post("dummy_url", {"users": users_string}) request.user = self.staff_user response = add_users_to_cohort(request, self.course.id, self.cohort1.id) self.assertEqual(response.status_code, 200) result = json.loads(response.content) self.assertEqual(result.get("success"), True) self.assertItemsEqual(result.get("added"), [{ "username": user.username, "name": user.profile.name, "email": user.email } for user in expected_added]) self.assertItemsEqual( result.get("changed"), [{ "username": user.username, "name": user.profile.name, "email": user.email, "previous_cohort": previous_cohort } for (user, previous_cohort) in expected_changed]) self.assertItemsEqual( result.get("present"), [username_or_email for (_, username_or_email) in expected_present]) self.assertItemsEqual(result.get("unknown"), expected_unknown) for user in expected_added + [ user for (user, _) in expected_changed + expected_present ]: self.assertEqual( CourseUserGroup.objects.get(course_id=self.course.id, group_type=CourseUserGroup.COHORT, users__id=user.id), self.cohort1)
def request_add_users_to_cohort(self, users_string, cohort, course, should_raise_404=False): """ Call `add_users_to_cohort` for a given cohort, course, and list of users, returning its response as a dict. When `should_raise_404` is True, verify that the request raised a Http404. """ request = RequestFactory().post("dummy_url", {"users": users_string}) request.user = self.staff_user if should_raise_404: self.assertRaises( Http404, lambda: add_users_to_cohort( request, course.id.to_deprecated_string(), cohort.id)) else: response = add_users_to_cohort(request, course.id.to_deprecated_string(), cohort.id) self.assertEqual(response.status_code, 200) return json.loads(response.content)
def check_request( self, users_string, expected_added=None, expected_changed=None, expected_present=None, expected_unknown=None ): """ Check that add_users_to_cohort returns the expected result and has the expected side effects. The given users will be added to cohort1. users_string is the string input entered by the client expected_added is a list of users expected_changed is a list of (user, previous_cohort) tuples expected_present is a list of (user, email/username) tuples where email/username corresponds to the input expected_unknown is a list of strings corresponding to the input """ expected_added = expected_added or [] expected_changed = expected_changed or [] expected_present = expected_present or [] expected_unknown = expected_unknown or [] request = RequestFactory().post("dummy_url", {"users": users_string}) request.user = self.staff_user response = add_users_to_cohort(request, self.course.id.to_deprecated_string(), self.cohort1.id) self.assertEqual(response.status_code, 200) result = json.loads(response.content) self.assertEqual(result.get("success"), True) self.assertItemsEqual( result.get("added"), [ {"username": user.username, "name": user.profile.name, "email": user.email} for user in expected_added ] ) self.assertItemsEqual( result.get("changed"), [ { "username": user.username, "name": user.profile.name, "email": user.email, "previous_cohort": previous_cohort } for (user, previous_cohort) in expected_changed ] ) self.assertItemsEqual( result.get("present"), [username_or_email for (_, username_or_email) in expected_present] ) self.assertItemsEqual(result.get("unknown"), expected_unknown) for user in expected_added + [user for (user, _) in expected_changed + expected_present]: self.assertEqual( CourseUserGroup.objects.get( course_id=self.course.id, group_type=CourseUserGroup.COHORT, users__id=user.id ), self.cohort1 )