tests for extra columns

This commit is contained in:
jansenk
2019-07-09 11:34:41 -04:00
committed by Jansen Kantor
parent 8c8de6c372
commit 8e7b647a4f

View File

@@ -337,6 +337,9 @@ class BaseCourseEnrollmentTestsMixin(ProgramCacheTestCaseMixin):
def request(self, path, data):
pass
def prepare_student(self, key):
pass
def create_program_enrollment(self, external_user_key, user=False):
"""
Creates and returns a ProgramEnrollment for the given external_user_key and
@@ -491,6 +494,19 @@ class BaseCourseEnrollmentTestsMixin(ProgramCacheTestCaseMixin):
self.assertEqual(response.status_code, 400)
self.assertIn('invalid enrollment record', response.data)
def test_extra_field(self):
self.prepare_student('learner-1')
enrollment = self.learner_enrollment('learner-1', 'inactive')
enrollment['favorite_author'] = 'Hemingway'
request_data = [enrollment]
response = self.request(self.default_url, request_data)
self.assertEqual(response.status_code, 200)
self.assertDictEqual(
response.data,
{'learner-1': 'inactive'}
)
class CourseEnrollmentPostTests(BaseCourseEnrollmentTestsMixin, APITestCase):
""" Tests for course enrollment POST """
@@ -498,6 +514,9 @@ class CourseEnrollmentPostTests(BaseCourseEnrollmentTestsMixin, APITestCase):
def request(self, path, data):
return self.client.post(path, data, format='json')
def prepare_student(self, key):
self.create_program_enrollment(key)
def test_create_enrollments(self):
self.create_program_enrollment('learner-1')
self.create_program_enrollment('learner-2')
@@ -582,6 +601,9 @@ class CourseEnrollmentModificationTestBase(BaseCourseEnrollmentTestsMixin):
setup_change_test_data
"""
def prepare_student(self, key):
self.create_program_and_course_enrollments(key)
def test_207_multistatus(self):
self.create_program_and_course_enrollments('learner-1')
mod_data = [self.learner_enrollment("learner-1"), self.learner_enrollment("learner-2")]
@@ -805,6 +827,8 @@ class ProgramCourseEnrollmentListTest(ListViewTestMixin, APITestCase):
class BaseProgramEnrollmentWriteTestsMixin(object):
""" Mixin class that defines common tests for program enrollment write endpoints """
add_uuid = False
program_uuid = '00000000-1111-2222-3333-444444444444'
success_status = 200
def student_enrollment(self, enrollment_status, external_user_key=None, prepare_student=False):
""" Convenience method to create a student enrollment record """
@@ -896,6 +920,25 @@ class BaseProgramEnrollmentWriteTestsMixin(object):
self.assertEqual(422, response.status_code)
self.assertEqual('invalid enrollment record', response.data)
def test_extra_field(self):
self.student_enrollment('pending', 'learner-01', prepare_student=True)
enrollment = self.student_enrollment('enrolled', 'learner-01')
enrollment['favorite_pokemon'] = 'bulbasaur'
enrollments = [enrollment]
with mock.patch('lms.djangoapps.program_enrollments.api.v1.views.get_programs', autospec=True):
with mock.patch(
'lms.djangoapps.program_enrollments.api.v1.views.get_user_by_program_id',
autospec=True,
return_value=None
):
url = self.get_url(program_uuid=self.program_uuid)
response = self.request(url, json.dumps(enrollments), content_type='application/json')
self.assertEqual(self.success_status, response.status_code)
self.assertDictEqual(
response.data,
{'learner-01': 'enrolled'}
)
@ddt.ddt
class ProgramEnrollmentViewPostTests(BaseProgramEnrollmentWriteTestsMixin, APITestCase):
@@ -904,6 +947,7 @@ class ProgramEnrollmentViewPostTests(BaseProgramEnrollmentWriteTestsMixin, APITe
"""
add_uuid = True
success_status = status.HTTP_201_CREATED
success_status = 201
def setUp(self):
super(ProgramEnrollmentViewPostTests, self).setUp()
@@ -1030,7 +1074,6 @@ class ProgramEnrollmentViewPatchTests(BaseProgramEnrollmentWriteTestsMixin, APIT
super(ProgramEnrollmentViewPatchTests, self).setUp()
self.request = self.client.patch
self.program_uuid = '00000000-1111-2222-3333-444444444444'
self.curriculum_uuid = 'aaaaaaaa-1111-2222-3333-444444444444'
self.other_curriculum_uuid = 'bbbbbbbb-1111-2222-3333-444444444444'