Revert "Create Python API for program_enrollments: Part IV"
This reverts commit af4e7a348a.
After merging the above commit, I was seeing 'internal-error's
on Stage in responses to the Registrar API. I am temporarily
reverting it until I can figure out a fix.
This commit is contained in:
committed by
Simon Chen
parent
e7a509faf0
commit
775d2fd807
@@ -15,10 +15,11 @@ from openedx.core.djangoapps.content.course_overviews.tests.factories import Cou
|
||||
from student.tests.factories import UserFactory
|
||||
|
||||
from ..linking import (
|
||||
COURSE_ENROLLMENT_ERR_TEMPLATE,
|
||||
NO_LMS_USER_TEMPLATE,
|
||||
NO_PROGRAM_ENROLLMENT_TEMPLATE,
|
||||
_user_already_linked_message,
|
||||
link_program_enrollments
|
||||
link_program_enrollments_to_lms_users,
|
||||
user_already_linked_message
|
||||
)
|
||||
|
||||
LOG_PATH = 'lms.djangoapps.program_enrollments.api.linking'
|
||||
@@ -122,6 +123,15 @@ class TestLinkProgramEnrollmentsMixin(object):
|
||||
[course_enrollment.course.id for course_enrollment in course_enrollments]
|
||||
)
|
||||
|
||||
def _assert_error_message(self, errors, error_key, logger, log_level, expected_error_msg):
|
||||
logger.check_present((LOG_PATH, log_level, expected_error_msg))
|
||||
self.assertDictEqual(
|
||||
{
|
||||
error_key: expected_error_msg
|
||||
},
|
||||
errors
|
||||
)
|
||||
|
||||
|
||||
class TestLinkProgramEnrollments(TestLinkProgramEnrollmentsMixin, TestCase):
|
||||
""" Tests for linking behavior """
|
||||
@@ -139,7 +149,7 @@ class TestLinkProgramEnrollments(TestLinkProgramEnrollmentsMixin, TestCase):
|
||||
self._create_waiting_course_enrollment(another_program_enrollment, self.fruit_course)
|
||||
self._create_waiting_course_enrollment(another_program_enrollment, self.animal_course)
|
||||
|
||||
link_program_enrollments(self.program, {'0001': self.user_1.username})
|
||||
link_program_enrollments_to_lms_users(self.program, {'0001': self.user_1.username})
|
||||
|
||||
self._assert_program_enrollment(self.user_1, self.program, '0001')
|
||||
self._assert_user_enrolled_in_program_courses(
|
||||
@@ -165,7 +175,7 @@ class TestLinkProgramEnrollments(TestLinkProgramEnrollmentsMixin, TestCase):
|
||||
status='inactive'
|
||||
)
|
||||
|
||||
link_program_enrollments(self.program, {'0001': self.user_1.username})
|
||||
link_program_enrollments_to_lms_users(self.program, {'0001': self.user_1.username})
|
||||
|
||||
self._assert_program_enrollment(self.user_1, self.program, '0001')
|
||||
|
||||
@@ -199,7 +209,7 @@ class TestLinkProgramEnrollmentsErrors(TestLinkProgramEnrollmentsMixin, TestCase
|
||||
asserts that user_2 was not linked because the enrollment was not found
|
||||
"""
|
||||
with LogCapture() as logger:
|
||||
errors = link_program_enrollments(
|
||||
errors = link_program_enrollments_to_lms_users(
|
||||
self.program,
|
||||
{
|
||||
'0001': self.user_1.username,
|
||||
@@ -212,7 +222,7 @@ class TestLinkProgramEnrollmentsErrors(TestLinkProgramEnrollmentsMixin, TestCase
|
||||
)
|
||||
logger.check_present((LOG_PATH, 'WARNING', expected_error_msg))
|
||||
|
||||
self.assertDictEqual(errors, {'0002': expected_error_msg})
|
||||
self.assertDictEqual(errors, {('0002', self.user_2.username): expected_error_msg})
|
||||
self._assert_program_enrollment(self.user_1, self.program, '0001')
|
||||
self._assert_no_program_enrollment(self.user_2, self.program)
|
||||
|
||||
@@ -221,7 +231,7 @@ class TestLinkProgramEnrollmentsErrors(TestLinkProgramEnrollmentsMixin, TestCase
|
||||
enrollment_2 = self._create_waiting_enrollment(self.program, '0002')
|
||||
|
||||
with LogCapture() as logger:
|
||||
errors = link_program_enrollments(
|
||||
errors = link_program_enrollments_to_lms_users(
|
||||
self.program,
|
||||
{
|
||||
'0001': self.user_1.username,
|
||||
@@ -231,7 +241,7 @@ class TestLinkProgramEnrollmentsErrors(TestLinkProgramEnrollmentsMixin, TestCase
|
||||
expected_error_msg = NO_LMS_USER_TEMPLATE.format('nonexistant-user')
|
||||
logger.check_present((LOG_PATH, 'WARNING', expected_error_msg))
|
||||
|
||||
self.assertDictEqual(errors, {'0002': expected_error_msg})
|
||||
self.assertDictEqual(errors, {('0002', 'nonexistant-user'): expected_error_msg})
|
||||
self._assert_program_enrollment(self.user_1, self.program, '0001')
|
||||
self._assert_no_user(enrollment_2)
|
||||
|
||||
@@ -246,17 +256,17 @@ class TestLinkProgramEnrollmentsErrors(TestLinkProgramEnrollmentsMixin, TestCase
|
||||
self._assert_program_enrollment(self.user_2, self.program, '0002', refresh=False)
|
||||
|
||||
with LogCapture() as logger:
|
||||
errors = link_program_enrollments(
|
||||
errors = link_program_enrollments_to_lms_users(
|
||||
self.program,
|
||||
{
|
||||
'0001': self.user_1.username,
|
||||
'0002': self.user_2.username
|
||||
}
|
||||
)
|
||||
expected_error_msg = _user_already_linked_message(program_enrollment, self.user_2)
|
||||
expected_error_msg = user_already_linked_message(program_enrollment, self.user_2)
|
||||
logger.check_present((LOG_PATH, 'WARNING', expected_error_msg))
|
||||
|
||||
self.assertDictEqual(errors, {'0002': expected_error_msg})
|
||||
self.assertDictEqual(errors, {('0002', self.user_2.username): expected_error_msg})
|
||||
self._assert_program_enrollment(self.user_1, self.program, '0001')
|
||||
self._assert_program_enrollment(self.user_2, self.program, '0002')
|
||||
|
||||
@@ -273,17 +283,17 @@ class TestLinkProgramEnrollmentsErrors(TestLinkProgramEnrollmentsMixin, TestCase
|
||||
self._assert_program_enrollment(user_3, self.program, '0003', refresh=False)
|
||||
|
||||
with LogCapture() as logger:
|
||||
errors = link_program_enrollments(
|
||||
errors = link_program_enrollments_to_lms_users(
|
||||
self.program,
|
||||
{
|
||||
'0001': self.user_1.username,
|
||||
'0003': self.user_2.username,
|
||||
}
|
||||
)
|
||||
expected_error_msg = _user_already_linked_message(enrollment, self.user_2)
|
||||
expected_error_msg = user_already_linked_message(enrollment, self.user_2)
|
||||
logger.check_present((LOG_PATH, 'WARNING', expected_error_msg))
|
||||
|
||||
self.assertDictEqual(errors, {'0003': expected_error_msg})
|
||||
self.assertDictEqual(errors, {('0003', self.user_2.username): expected_error_msg})
|
||||
self._assert_program_enrollment(self.user_1, self.program, '0001')
|
||||
self._assert_no_program_enrollment(self.user_2, self.program)
|
||||
self._assert_program_enrollment(user_3, self.program, '0003')
|
||||
@@ -303,14 +313,22 @@ class TestLinkProgramEnrollmentsErrors(TestLinkProgramEnrollmentsMixin, TestCase
|
||||
self._create_waiting_course_enrollment(program_enrollment_2, self.fruit_course)
|
||||
self._create_waiting_course_enrollment(program_enrollment_2, self.animal_course)
|
||||
|
||||
errors = link_program_enrollments(
|
||||
self.program,
|
||||
{
|
||||
'0001': self.user_1.username,
|
||||
'0002': self.user_2.username
|
||||
}
|
||||
msg = COURSE_ENROLLMENT_ERR_TEMPLATE.format(
|
||||
user=self.user_1.username, course=nonexistant_course
|
||||
)
|
||||
with LogCapture() as logger:
|
||||
errors = link_program_enrollments_to_lms_users(
|
||||
self.program,
|
||||
{
|
||||
'0001': self.user_1.username,
|
||||
'0002': self.user_2.username
|
||||
}
|
||||
)
|
||||
logger.check_present((LOG_PATH, 'ERROR', msg))
|
||||
|
||||
self.assertDictEqual(
|
||||
errors, {('0001', self.user_1.username): 'NonExistentCourseError: ' + msg}
|
||||
)
|
||||
self.assertIn(errors['0001'], 'NonExistentCourseError: ')
|
||||
self._assert_no_program_enrollment(self.user_1, self.program)
|
||||
self._assert_no_user(program_enrollment_1)
|
||||
course_enrollment_1.refresh_from_db()
|
||||
@@ -330,15 +348,46 @@ class TestLinkProgramEnrollmentsErrors(TestLinkProgramEnrollmentsMixin, TestCase
|
||||
program_enrollment_1 = self._create_waiting_enrollment(self.program, '0001')
|
||||
self._create_waiting_enrollment(self.program, '0002')
|
||||
|
||||
errors = link_program_enrollments(
|
||||
self.program,
|
||||
{
|
||||
'0001': self.user_1.username,
|
||||
'0002': self.user_2.username,
|
||||
}
|
||||
)
|
||||
msg = 'Integrity error while linking program enrollments'
|
||||
with LogCapture() as logger:
|
||||
errors = link_program_enrollments_to_lms_users(
|
||||
self.program,
|
||||
{
|
||||
'0001': self.user_1.username,
|
||||
'0002': self.user_2.username,
|
||||
}
|
||||
)
|
||||
logger.check_present((LOG_PATH, 'ERROR', msg))
|
||||
|
||||
self.assertEqual(len(errors), 1)
|
||||
self.assertIn('UNIQUE constraint failed', errors['0001'])
|
||||
self.assertIn('UNIQUE constraint failed', errors[('0001', self.user_1.username)])
|
||||
self._assert_no_user(program_enrollment_1)
|
||||
self._assert_program_enrollment(self.user_2, self.program, '0002')
|
||||
|
||||
def test_invalid_uuid(self):
|
||||
self._create_waiting_enrollment(self.program, 'learner-0')
|
||||
with self.assertRaisesMessage(ValueError, 'badly formed hexadecimal UUID string'):
|
||||
link_program_enrollments_to_lms_users(
|
||||
'notauuid::thisisntauuid',
|
||||
{
|
||||
'learner-0': self.user_1.username,
|
||||
}
|
||||
)
|
||||
|
||||
def test_None(self):
|
||||
self._create_waiting_enrollment(self.program, 'learner-0')
|
||||
msg = 'external_user_key or username cannot be None'
|
||||
with self.assertRaisesMessage(ValueError, msg):
|
||||
link_program_enrollments_to_lms_users(
|
||||
self.program,
|
||||
{
|
||||
None: self.user_1.username,
|
||||
}
|
||||
)
|
||||
with self.assertRaisesMessage(ValueError, msg):
|
||||
link_program_enrollments_to_lms_users(
|
||||
'notauuid::thisisntauuid',
|
||||
{
|
||||
'learner-0': None,
|
||||
}
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user