Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
    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
            )