Skip to content

Commit

Permalink
feat: add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
syedsajjadkazmii committed Nov 28, 2024
1 parent 15180aa commit 4f8daff
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 5 deletions.
22 changes: 20 additions & 2 deletions commerce_coordinator/apps/lms/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,14 @@

class CourseEnrollTaskAfterReturn(Task):
def on_failure(self, exc, task_id, args, kwargs, einfo):
error_message = json.loads(exc.response.text).get('message', '')
print('\n\n\n\n hehe exc = ', exc, '\n\n\n\n')
print('\n\n\n\n hehe args = ', args, '\n\n\n\n')
print('\n\n\n\n hehe kwargs = ', kwargs, '\n\n\n\n')
print('\n\n\n\n hehe einfo = ', einfo, '\n\n\n\n')
print('\n\n\n\n hehe max_retries = ', self.max_retries, '\n\n\n\n')
print('\n\n\n\n hehe request = ', self.request, '\n\n\n\n')
print('\n\n\n\n hehe retries = ', self.request.retries, '\n\n\n\n')
error_message = json.loads(exc.response.text).get('message', '') if exc.response else 'Unknown error'
edx_lms_user_id = kwargs.get('edx_lms_user_id')
user_email = kwargs.get('user_email')
order_number = kwargs.get('order_number')
Expand Down Expand Up @@ -87,6 +94,9 @@ def fulfill_order_placed_send_enroll_in_course_task(
f'LMS fulfill_order_placed_send_enroll_in_course_task fired with {locals()},'
)

print('hehe triggered celery self.max_retries = ', self.max_retries)
print('hehe triggered celery self.request.retries = ', self.request.retries)

user = User.objects.get(lms_user_id=edx_lms_user_id)

enrollment_data = {
Expand Down Expand Up @@ -134,8 +144,12 @@ def fulfill_order_placed_send_enroll_in_course_task(
})

# Updating the order version and stateID after the transition to 'Fulfillment Failure'
print('hehe before calling self.request.retries = ', self.request.retries)
if self.request.retries > 0:
print('hehe inside 1 calling self.request.retries = ', self.request.retries)
client = CommercetoolsAPIClient()
print('hehe inside 2 calling self.request.retries = ', self.request.retries)

# A retry means the current line item state on the order would be a failure state
line_item_state_id = client.get_state_by_key(TwoUKeys.FAILURE_FULFILMENT_STATE).id
order_version = client.get_order_by_id(order_id).version
Expand All @@ -157,4 +171,8 @@ def fulfill_order_placed_send_enroll_in_course_task(
'celery_task_id': self.request.id
}

return LMSAPIClient().enroll_user_in_course(enrollment_data, line_item_state_payload, fulfillment_logging_obj)
print('hehe before calling lms = ', enrollment_data, line_item_state_payload, fulfillment_logging_obj)

output = LMSAPIClient().enroll_user_in_course(enrollment_data, line_item_state_payload, fulfillment_logging_obj)
print('hehe = ', output)
return output
5 changes: 4 additions & 1 deletion commerce_coordinator/apps/lms/tests/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,10 @@
'line_item_id': '822d77c4-00a6-4fb9-909b-094ef0b8c4b9',
'item_quantity': 1,
'line_item_state_id': '8f2e888e-9777-4557-9a7f-c649153770c2',
'message_id': '1063f19c-08f3-41a4-a952-a8577374373c'
'message_id': '1063f19c-08f3-41a4-a952-a8577374373c',
'user_first_name': 'test',
'user_email': '[email protected]',
'course_title': 'Demonstration Course',
}

EXAMPLE_FULFILLMENT_REQUEST_PAYLOAD = {
Expand Down
44 changes: 42 additions & 2 deletions commerce_coordinator/apps/lms/tests/test_tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"""

import logging
from unittest.mock import patch, sentinel
from unittest.mock import patch, sentinel, Mock, PropertyMock

from django.test import TestCase
from requests import RequestException
Expand Down Expand Up @@ -49,7 +49,10 @@ def unpack_for_uut(values):
values['line_item_id'],
values['item_quantity'],
values['line_item_state_id'],
values['message_id']
values['message_id'],
values['user_first_name'],
values['user_email'],
values['course_title']
)

def setUp(self):
Expand Down Expand Up @@ -130,3 +133,40 @@ def test_retry_logic(self, mock_ct_get_order, mock_ct_get_state, mock_client):

mock_ct_get_state.assert_called_with(TwoUKeys.FAILURE_FULFILMENT_STATE)
mock_ct_get_order.assert_called_with(EXAMPLE_FULFILLMENT_SIGNAL_PAYLOAD.get('order_id'))

# @patch('commerce_coordinator.apps.lms.tasks.send_fulfillment_error_email')
# @patch.object(fulfill_order_placed_send_enroll_in_course_task, 'max_retries', 5)
# def test_fulfillment_error_email_is_sent_on_failure(self, mock_send_email, mock_client):
# """
# Test that `on_failure` sends the appropriate failure email.
# """
# mock_response = Mock()
# mock_response.text = '{"message": "course mode is expired or otherwise unavailable for course run"}'
# exception = RequestException("400 Bad Request")
# exception.response = mock_response
#
# exc = exception
# task_id = "test_task_id"
# args = []
# kwargs = EXAMPLE_FULFILLMENT_SIGNAL_PAYLOAD
# einfo = Mock()
#
# fulfill_order_placed_send_enroll_in_course_task.push_request(retries=5)
# fulfill_order_placed_send_enroll_in_course_task.on_failure(
# exc=exc,
# task_id=task_id,
# args=args,
# kwargs=kwargs,
# einfo=einfo
# )
#
# mock_send_email.assert_called_once_with(
# EXAMPLE_FULFILLMENT_SIGNAL_PAYLOAD['edx_lms_user_id'],
# EXAMPLE_FULFILLMENT_SIGNAL_PAYLOAD['user_email'],
# {
# 'order_number': EXAMPLE_FULFILLMENT_SIGNAL_PAYLOAD['order_number'],
# 'product_type': 'course',
# 'product_name': EXAMPLE_FULFILLMENT_SIGNAL_PAYLOAD['course_title'],
# 'first_name': EXAMPLE_FULFILLMENT_SIGNAL_PAYLOAD['user_first_name'],
# }
# )

0 comments on commit 4f8daff

Please sign in to comment.