def test_unenroll(self, course_modes, mode): # Add a fake course enrollment information to the fake data API fake_data_api.add_course(self.COURSE_ID, course_modes=course_modes) # Enroll in the course and verify the URL we get sent to result = api.add_enrollment(self.USERNAME, self.COURSE_ID, mode=mode) self.assertIsNotNone(result) self.assertEquals(result['student'], self.USERNAME) self.assertEquals(result['course']['course_id'], self.COURSE_ID) self.assertEquals(result['mode'], mode) self.assertTrue(result['is_active']) result = api.deactivate_enrollment(self.USERNAME, self.COURSE_ID) self.assertIsNotNone(result) self.assertEquals(result['student'], self.USERNAME) self.assertEquals(result['course']['course_id'], self.COURSE_ID) self.assertEquals(result['mode'], mode) self.assertFalse(result['is_active'])
def get_course_enrollment(request, course_id=None): """Create, read, or update enrollment information for a student. HTTP Endpoint for all CRUD operations for a student course enrollment. Allows creation, reading, and updates of the current enrollment for a particular course. Args: request (Request): To get current course enrollment information, a GET request will return information for the current user and the specified course. A POST request will create a new course enrollment for the current user. If 'mode' or 'deactivate' are found in the POST parameters, the mode can be modified, or the enrollment can be deactivated. course_id (str): URI element specifying the course location. Enrollment information will be returned, created, or updated for this particular course. Return: A JSON serialized representation of the course enrollment. If this is a new or modified enrollment, the returned enrollment will reflect all changes. """ try: if 'mode' in request.DATA: return Response( api.update_enrollment(request.user.username, course_id, request.DATA['mode'])) elif 'deactivate' in request.DATA: return Response( api.deactivate_enrollment(request.user.username, course_id)) elif course_id and request.method == 'POST': return Response( api.add_enrollment(request.user.username, course_id)) else: return Response( api.get_enrollment(request.user.username, course_id)) except api.CourseModeNotFoundError as error: return Response(status=status.HTTP_400_BAD_REQUEST, data=error.data) except NonExistentCourseError: return Response(status=status.HTTP_400_BAD_REQUEST) except api.EnrollmentNotFoundError: return Response(status=status.HTTP_400_BAD_REQUEST) except CourseEnrollmentException: return Response(status=status.HTTP_400_BAD_REQUEST)
def get_course_enrollment(request, course_id=None): """Create, read, or update enrollment information for a student. HTTP Endpoint for all CRUD operations for a student course enrollment. Allows creation, reading, and updates of the current enrollment for a particular course. Args: request (Request): To get current course enrollment information, a GET request will return information for the current user and the specified course. A POST request will create a new course enrollment for the current user. If 'mode' or 'deactivate' are found in the POST parameters, the mode can be modified, or the enrollment can be deactivated. course_id (str): URI element specifying the course location. Enrollment information will be returned, created, or updated for this particular course. Return: A JSON serialized representation of the course enrollment. If this is a new or modified enrollment, the returned enrollment will reflect all changes. """ try: if 'mode' in request.DATA: return Response(api.update_enrollment(request.user.username, course_id, request.DATA['mode'])) elif 'deactivate' in request.DATA: return Response(api.deactivate_enrollment(request.user.username, course_id)) elif course_id and request.method == 'POST': return Response(api.add_enrollment(request.user.username, course_id)) else: return Response(api.get_enrollment(request.user.username, course_id)) except api.CourseModeNotFoundError as error: return Response(status=status.HTTP_400_BAD_REQUEST, data=error.data) except NonExistentCourseError: return Response(status=status.HTTP_400_BAD_REQUEST) except api.EnrollmentNotFoundError: return Response(status=status.HTTP_400_BAD_REQUEST) except CourseEnrollmentException: return Response(status=status.HTTP_400_BAD_REQUEST)
def test_unenroll_not_enrolled_in_course(self): # Add a fake course enrollment information to the fake data API fake_data_api.add_course(self.COURSE_ID, course_modes=['honor']) api.deactivate_enrollment(self.USERNAME, self.COURSE_ID)