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)
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])
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
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)
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)
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
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