Minor fixes and code changes to the Entitlement Refund API
[LEARNER-2668]
This commit is contained in:
@@ -475,3 +475,51 @@ class EntitlementEnrollmentViewSetTest(ModuleStoreTestCase):
|
||||
assert not CourseEnrollment.is_enrolled(self.user, self.course.id)
|
||||
assert course_entitlement.enrollment_course_run is None
|
||||
assert course_entitlement.expired_at is not None
|
||||
|
||||
@patch('entitlements.api.v1.views.CourseEntitlement.is_entitlement_refundable', return_value=False)
|
||||
@patch('lms.djangoapps.commerce.signals.refund_entitlement', return_value=[1])
|
||||
@patch("entitlements.api.v1.views.get_course_runs_for_course")
|
||||
def test_user_can_revoke_and_no_refund_available(
|
||||
self,
|
||||
mock_get_course_runs,
|
||||
mock_refund_entitlement,
|
||||
mock_is_refundable
|
||||
):
|
||||
course_entitlement = CourseEntitlementFactory.create(user=self.user)
|
||||
mock_get_course_runs.return_value = self.return_values
|
||||
|
||||
url = reverse(
|
||||
self.ENTITLEMENTS_ENROLLMENT_NAMESPACE,
|
||||
args=[str(course_entitlement.uuid)]
|
||||
)
|
||||
assert course_entitlement.enrollment_course_run is None
|
||||
|
||||
data = {
|
||||
'course_run_id': str(self.course.id)
|
||||
}
|
||||
response = self.client.post(
|
||||
url,
|
||||
data=json.dumps(data),
|
||||
content_type='application/json',
|
||||
)
|
||||
course_entitlement.refresh_from_db()
|
||||
|
||||
assert response.status_code == 201
|
||||
assert CourseEnrollment.is_enrolled(self.user, self.course.id)
|
||||
|
||||
# Unenroll with Revoke for refund
|
||||
with patch('lms.djangoapps.commerce.signals.handle_refund_entitlement') as mock_refund_handler:
|
||||
REFUND_ENTITLEMENT.connect(mock_refund_handler)
|
||||
|
||||
revoke_url = url + '?is_refund=true'
|
||||
response = self.client.delete(
|
||||
revoke_url,
|
||||
content_type='application/json',
|
||||
)
|
||||
assert response.status_code == 400
|
||||
|
||||
course_entitlement.refresh_from_db()
|
||||
assert not mock_refund_handler.called
|
||||
assert CourseEnrollment.is_enrolled(self.user, self.course.id)
|
||||
assert course_entitlement.enrollment_course_run is not None
|
||||
assert course_entitlement.expired_at is None
|
||||
|
||||
@@ -262,7 +262,7 @@ class EntitlementEnrollmentViewSet(viewsets.GenericViewSet):
|
||||
If is_refund parameter is provided then unenroll the user, set Entitlement expiration, and issue
|
||||
a refund
|
||||
"""
|
||||
is_refund = True if request.query_params.get('is_refund', 'false') == 'true' else False
|
||||
is_refund = request.query_params.get('is_refund', 'false') == 'true'
|
||||
|
||||
# Retrieve the entitlement for the UUID belongs to the current user.
|
||||
try:
|
||||
@@ -310,5 +310,10 @@ class EntitlementEnrollmentViewSet(viewsets.GenericViewSet):
|
||||
'Entitlement Refund failed for Course Entitlement [%s]. Entitlement is not refundable',
|
||||
str(entitlement.uuid)
|
||||
)
|
||||
return Response(
|
||||
status=status.HTTP_400_BAD_REQUEST,
|
||||
data={
|
||||
'message': 'Entitlement refund failed, Entitlement is not refundable'
|
||||
})
|
||||
|
||||
return Response(status=status.HTTP_204_NO_CONTENT)
|
||||
|
||||
Reference in New Issue
Block a user