def test_add_member_to_course(self, mock_person_filter,
                                  mock_get_canvas_course_section,
                                  mock_add_canvas_course_enrollee,
                                  mock_role_name, mock_member_class,
                                  mock_user_role):
        for user_role_id, member_class in self.test_data:

            # ensure we have unique ids for this run, since we're not resetting
            # the db between them
            canvas_course_id = random.randint(1, SQLITE_MAXINT)
            canvas_role_name = 'StudentEnrollment'
            course_instance_id = random.randint(1, SQLITE_MAXINT)
            user_id = random.randint(1, SQLITE_MAXINT)

            # set up mocks
            mock_member_class.return_value = member_class
            mock_person = Mock()
            mock_person_filter.return_value = [mock_person]
            mock_role_name.return_value = canvas_role_name

            # run it
            existing_enrollment, person = add_member_to_course(
                                              user_id, user_role_id,
                                              course_instance_id,
                                              canvas_course_id)

            # validate the results
            self.assertFalse(existing_enrollment)
            self.assertIs(person, mock_person)

            # validate the Person lookup, since we mocked the result
            self.assertEqual(mock_person_filter.call_args_list,
                             [call(univ_id=user_id)])

            # verify the db entry was created
            membership = member_class.objects.filter(
                             user_id=user_id,
                             course_instance_id=course_instance_id,
                             role_id=user_role_id)
            self.assertEqual(membership.count(), 1)

            # verify the canvas enrollment was created
            self.assertEqual(mock_add_canvas_course_enrollee.call_args_list,
                             [call(canvas_course_id, canvas_role_name, user_id)])

            # reset the mocks for the next run
            mock_person_filter.reset_mock()
            mock_add_canvas_course_enrollee.reset_mock()
Exemple #2
0
    def test_add_member_to_course(self, mock_person_filter,
                                  mock_get_canvas_course_section,
                                  mock_add_canvas_course_enrollee,
                                  mock_role_name, mock_member_class,
                                  mock_user_role):
        for user_role_id, member_class in self.test_data:

            # ensure we have unique ids for this run, since we're not resetting
            # the db between them
            canvas_course_id = random.randint(1, SQLITE_MAXINT)
            canvas_role_name = 'StudentEnrollment'
            course_instance_id = random.randint(1, SQLITE_MAXINT)
            user_id = random.randint(1, SQLITE_MAXINT)

            # set up mocks
            mock_member_class.return_value = member_class
            mock_person = Mock()
            mock_person_filter.return_value = [mock_person]
            mock_role_name.return_value = canvas_role_name

            # run it
            existing_enrollment, person = add_member_to_course(
                                              user_id, user_role_id,
                                              course_instance_id,
                                              canvas_course_id)

            # validate the results
            self.assertFalse(existing_enrollment)
            self.assertIs(person, mock_person)

            # validate the Person lookup, since we mocked the result
            self.assertEqual(mock_person_filter.call_args_list,
                             [call(univ_id=user_id)])

            # verify the db entry was created
            membership = member_class.objects.filter(
                             user_id=user_id,
                             course_instance_id=course_instance_id,
                             role_id=user_role_id)
            self.assertEqual(membership.count(), 1)

            # verify the canvas enrollment was created
            self.assertEqual(mock_add_canvas_course_enrollee.call_args_list,
                             [call(canvas_course_id, canvas_role_name, user_id)])

            # reset the mocks for the next run
            mock_person_filter.reset_mock()
            mock_add_canvas_course_enrollee.reset_mock()
    def test_add_member_to_course_existing_enrollment(self,
            mock_person_filter, mock_get_course_member_class,
            mock_add_canvas_course_enrollee, mock_user_role):

        # always throw an exception from enrollment.save() to trigger the
        # "existing enrollment" behavior
        mock_member_instance = \
            mock_get_course_member_class.return_value.return_value
        mock_member_instance.save.side_effect = RuntimeError

        for user_role_id, member_class in self.test_data:
            # ensure we have unique ids for this run, since we're not resetting
            # the db between them
            canvas_course_id = random.randint(1, SQLITE_MAXINT)
            course_instance_id = random.randint(1, SQLITE_MAXINT)
            user_id = random.randint(1, SQLITE_MAXINT)

            # set up mocks
            mock_person = Mock()
            mock_person_filter.return_value = [mock_person]

            # run it
            existing_enrollment, person = add_member_to_course(
                                              user_id, user_role_id,
                                              course_instance_id,
                                              canvas_course_id)

            # validate the results
            self.assertTrue(existing_enrollment)
            self.assertIs(person, mock_person)

            # validate the Person lookup, since we mocked the result
            self.assertEqual(mock_person_filter.call_args_list,
                             [call(univ_id=user_id)])

            # verify the db entry was not created
            membership = member_class.objects.filter(
                             user_id=user_id,
                             course_instance_id=course_instance_id,
                             role_id=user_role_id)
            self.assertEqual(membership.count(), 0)

            # verify the canvas enrollment was not created
            self.assertEqual(mock_add_canvas_course_enrollee.call_count, 0)

            # reset the mocks for the next run
            mock_person_filter.reset_mock()
Exemple #4
0
    def test_add_member_to_course_existing_enrollment(self,
            mock_person_filter, mock_get_course_member_class,
            mock_add_canvas_course_enrollee, mock_user_role):

        # always throw an exception from enrollment.save() to trigger the
        # "existing enrollment" behavior
        mock_member_instance = \
            mock_get_course_member_class.return_value.return_value
        mock_member_instance.save.side_effect = RuntimeError

        for user_role_id, member_class in self.test_data:
            # ensure we have unique ids for this run, since we're not resetting
            # the db between them
            canvas_course_id = random.randint(1, SQLITE_MAXINT)
            course_instance_id = random.randint(1, SQLITE_MAXINT)
            user_id = random.randint(1, SQLITE_MAXINT)

            # set up mocks
            mock_person = Mock()
            mock_person_filter.return_value = [mock_person]

            # run it
            existing_enrollment, person = add_member_to_course(
                                              user_id, user_role_id,
                                              course_instance_id,
                                              canvas_course_id)

            # validate the results
            self.assertTrue(existing_enrollment)
            self.assertIs(person, mock_person)

            # validate the Person lookup, since we mocked the result
            self.assertEqual(mock_person_filter.call_args_list,
                             [call(univ_id=user_id)])

            # verify the db entry was not created
            membership = member_class.objects.filter(
                             user_id=user_id,
                             course_instance_id=course_instance_id,
                             role_id=user_role_id)
            self.assertEqual(membership.count(), 0)

            # verify the canvas enrollment was not created
            self.assertEqual(mock_add_canvas_course_enrollee.call_count, 0)

            # reset the mocks for the next run
            mock_person_filter.reset_mock()