コード例 #1
0
    def test_change_enrollment_mode_fullfills_entitlement(self, search_string_type, mock_get_course_uuid):
        """
        Assert that changing student's enrollment fulfills it's respective entitlement if it exists.
        """
        assert ManualEnrollmentAudit.get_manual_enrollment_by_email(self.student.email) is None
        enrollment = CourseEnrollment.get_enrollment(self.student, self.course.id)
        entitlement = CourseEntitlementFactory.create(
            user=self.user,
            mode=CourseMode.VERIFIED,
            enrollment_course_run=enrollment
        )
        mock_get_course_uuid.return_value = entitlement.course_uuid

        url = reverse(
            'support:enrollment_list',
            kwargs={'username_or_email': getattr(self.student, search_string_type)}
        )
        response = self.client.post(url, data={
            'course_id': str(self.course.id),
            'old_mode': CourseMode.AUDIT,
            'new_mode': CourseMode.VERIFIED,
            'reason': 'Financial Assistance'
        })
        entitlement.refresh_from_db()
        assert response.status_code == 200
        assert ManualEnrollmentAudit.get_manual_enrollment_by_email(self.student.email) is not None
        assert entitlement.enrollment_course_run is not None
        assert entitlement.is_entitlement_redeemable() is False
        self.assert_enrollment(CourseMode.VERIFIED)
コード例 #2
0
    def assert_update_enrollment(self, search_string_type, new_mode):
        """ Dry method to update the enrollment and assert response."""
        assert ManualEnrollmentAudit.get_manual_enrollment_by_email(self.student.email) is None
        url = reverse(
            'support:enrollment_list',
            kwargs={'username_or_email': getattr(self.student, search_string_type)}
        )

        with patch('lms.djangoapps.support.views.enrollments.get_credit_provider_attribute_values') as mock_method:
            credit_provider = (
                ['Arizona State University'], 'You are now eligible for credit from Arizona State University'
            )
            mock_method.return_value = credit_provider
            response = self.client.post(url, data={
                'course_id': str(self.course.id),
                'old_mode': CourseMode.AUDIT,
                'new_mode': new_mode,
                'reason': 'Financial Assistance'
            })

        assert response.status_code == 200
        assert ManualEnrollmentAudit.get_manual_enrollment_by_email(self.student.email) is not None
        self.assert_enrollment(new_mode)
        if new_mode == 'credit':
            enrollment_attr = CourseEnrollmentAttribute.objects.first()
            assert enrollment_attr.value == str(credit_provider[0])
コード例 #3
0
 def test_create_new_enrollment(self, search_string_type):
     """
     Assert that a new enrollment is created through post request endpoint.
     """
     test_user = UserFactory.create(username='******',
                                    email='*****@*****.**',
                                    password='******')
     assert ManualEnrollmentAudit.get_manual_enrollment_by_email(
         test_user.email) is None
     url = reverse('support:enrollment_list',
                   kwargs={
                       'username_or_email':
                       getattr(test_user, search_string_type)
                   })
     response = self.client.post(url,
                                 data={
                                     'course_id': str(self.course.id),
                                     'mode': CourseMode.AUDIT,
                                     'reason': 'Financial Assistance'
                                 })
     assert response.status_code == 200
     manual_enrollment = ManualEnrollmentAudit.get_manual_enrollment_by_email(
         test_user.email)
     assert manual_enrollment is not None
     assert manual_enrollment.reason == response.json()['reason']
     assert manual_enrollment.enrolled_email == '*****@*****.**'
     assert manual_enrollment.state_transition == UNENROLLED_TO_ENROLLED
コード例 #4
0
 def test_change_enrollment(self, search_string_type):
     assert ManualEnrollmentAudit.get_manual_enrollment_by_email(self.student.email) is None
     url = reverse(
         'support:enrollment_list',
         kwargs={'username_or_email': getattr(self.student, search_string_type)}
     )
     response = self.client.post(url, data={
         'course_id': str(self.course.id),
         'old_mode': CourseMode.AUDIT,
         'new_mode': CourseMode.VERIFIED,
         'reason': 'Financial Assistance'
     })
     assert response.status_code == 200
     assert ManualEnrollmentAudit.get_manual_enrollment_by_email(self.student.email) is not None
     self.assert_enrollment(CourseMode.VERIFIED)
コード例 #5
0
 def test_update_enrollments_with_expired_mode(self, search_string_type):
     """ Verify that enrollment can be updated to verified mode. """
     self.set_course_end_date_and_expiry()
     self.assertIsNone(
         ManualEnrollmentAudit.get_manual_enrollment_by_email(
             self.student.email))
     self.assert_update_enrollment(search_string_type, CourseMode.VERIFIED)
コード例 #6
0
    def test_change_enrollment_bad_data(self, data, error_message):
        # `self` isn't available from within the DDT declaration, so
        # assign the course ID here
        if 'course_id' in data and data['course_id'] is None:
            data['course_id'] = str(self.course.id)
        response = self.client.post(self.url, data)

        assert response.status_code == 400
        assert re.match(error_message, response.content.decode('utf-8').replace("'", '').replace('"', '')) is not None
        self.assert_enrollment(CourseMode.AUDIT)
        assert ManualEnrollmentAudit.get_manual_enrollment_by_email(self.student.email) is None
コード例 #7
0
 def test_create_existing_enrollment(self, search_string_type):
     """
     Assert that a new enrollment is not created when an enrollment already exist for that course.
     """
     assert ManualEnrollmentAudit.get_manual_enrollment_by_email(
         self.student.email) is None
     url = reverse('support:enrollment_list',
                   kwargs={
                       'username_or_email':
                       getattr(self.student, search_string_type)
                   })
     response = self.client.post(url,
                                 data={
                                     'course_id': str(self.course.id),
                                     'mode': CourseMode.AUDIT,
                                     'reason': 'Financial Assistance'
                                 })
     assert response.status_code == 400
     assert ManualEnrollmentAudit.get_manual_enrollment_by_email(
         self.student.email) is None