Skip to content

Commit 1b5fde2

Browse files
committed
fix: fix tests and linting
1 parent 9d8fd6c commit 1b5fde2

File tree

3 files changed

+57
-52
lines changed

3 files changed

+57
-52
lines changed

commerce_coordinator/apps/commercetools/pipeline.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -214,14 +214,12 @@ def run_filter(
214214
try:
215215
ct_api_client = CommercetoolsAPIClient()
216216
order = ct_api_client.get_order_by_id(order_id=order_id)
217-
intent_id = get_edx_payment_intent_id(order)
218217

219218
if not is_commercetools_line_item_already_refunded(order, order_line_item_id):
220219
returned_order = ct_api_client.create_return_for_order(
221220
order_id=order.id,
222221
order_version=order.version,
223-
order_line_item_id=order_line_item_id,
224-
payment_intent_id=intent_id
222+
order_line_item_id=order_line_item_id
225223
)
226224

227225
returned_line_item_return_id = returned_order.return_info[0].items[0].id
@@ -256,8 +254,6 @@ class UpdateCommercetoolsOrderReturnPaymentStatus(PipelineStep):
256254

257255
def run_filter(
258256
self,
259-
payment_intent_id,
260-
amount_in_cents,
261257
**kwargs
262258
):
263259
"""
@@ -279,8 +275,8 @@ def run_filter(
279275
order_id=order.id,
280276
order_version=order.version,
281277
return_line_item_return_id=return_line_item_return_id,
282-
payment_intent_id=payment_intent_id,
283-
amount_in_cents= amount_in_cents
278+
payment_intent_id=kwargs['payment_intent_id'],
279+
amount_in_cents=kwargs['amount_in_cents']
284280
)
285281

286282
return {

commerce_coordinator/apps/commercetools/tests/test_clients.py

Lines changed: 48 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,54 @@ def test_create_return_for_order_exception(self):
473473

474474
log_mock.assert_called_once_with(expected_message)
475475

476+
def test_successful_order_return_payment_state_update(self):
477+
base_url = self.client_set.get_base_url_from_client()
478+
479+
# Mocked order to be passed in to update method
480+
mock_order = gen_order("mock_order_id")
481+
mock_order.version = "2"
482+
mock_return_item = gen_return_item("mock_return_item_id", ReturnPaymentState.INITIAL)
483+
mock_return_info = ReturnInfo(items=[mock_return_item])
484+
mock_order.return_info.append(mock_return_info)
485+
486+
# Mocked expected order recieved after CT SDK call to update the order
487+
mock_response_order = gen_order("mock_order_id")
488+
mock_payment = gen_payment()
489+
mock_response_order.version = "3"
490+
mock_response_return_item = gen_return_item("mock_return_item_id", ReturnPaymentState.REFUNDED)
491+
mock_response_return_info = ReturnInfo(items=[mock_response_return_item])
492+
mock_response_order.return_info.append(mock_response_return_info)
493+
494+
with requests_mock.Mocker(real_http=True, case_sensitive=False) as mocker:
495+
mocker.post(
496+
f"{base_url}orders/mock_order_id",
497+
json=mock_response_order.serialize(),
498+
status_code=200
499+
)
500+
mocker.post(
501+
f"{base_url}payments/{mock_payment.id}",
502+
json=mock_payment.serialize(),
503+
status_code=200
504+
)
505+
mocker.get(
506+
f"{base_url}payments/key={mock_payment.id}",
507+
json=mock_payment.serialize(),
508+
status_code=200
509+
)
510+
mocker.get(
511+
f"{base_url}orders/mock_order_id",
512+
json=mock_response_order.serialize(),
513+
status_code=200
514+
)
515+
result = self.client_set.client.update_return_payment_state_after_successful_refund(
516+
mock_order.id,
517+
mock_order.version,
518+
mock_response_return_item.line_item_id,
519+
mock_payment.id,
520+
10000
521+
)
522+
self.assertEqual(result.return_info[1].items[0].payment_state, ReturnPaymentState.REFUNDED)
523+
476524
def test_create_refund_transaction(self):
477525
base_url = self.client_set.get_base_url_from_client()
478526

@@ -784,8 +832,6 @@ def setUp(self):
784832
'get_payment_by_key': self.mock.get_payment_by_key,
785833
'create_return_for_order': self.mock.create_return_for_order,
786834
'create_return_payment_transaction': self.mock.create_return_payment_transaction
787-
# 'update_return_payment_state_after_successful_refund':
788-
# self.mock.update_return_payment_state_after_successful_refund
789835
}
790836
)
791837

@@ -794,46 +840,6 @@ def tearDown(self):
794840
MonkeyPatch.unmonkey(CommercetoolsAPIClient)
795841
super().tearDown()
796842

797-
def test_successful_order_return_payment_state_update(self):
798-
base_url = self.client_set.get_base_url_from_client()
799-
800-
# Mocked order to be passed in to update method
801-
mock_order = gen_order("mock_order_id")
802-
mock_order.version = "2"
803-
mock_return_item = gen_return_item("mock_return_item_id", ReturnPaymentState.INITIAL)
804-
mock_return_info = ReturnInfo(items=[mock_return_item])
805-
mock_order.return_info.append(mock_return_info)
806-
807-
# Mocked expected order recieved after CT SDK call to update the order
808-
mock_response_order = gen_order("mock_order_id")
809-
mock_response_order.version = "3"
810-
mock_response_return_item = gen_return_item("mock_return_item_id", ReturnPaymentState.REFUNDED)
811-
mock_response_return_info = ReturnInfo(items=[mock_response_return_item])
812-
mock_response_order.return_info.append(mock_response_return_info)
813-
814-
mock_response_payment = gen_payment()
815-
816-
with requests_mock.Mocker(real_http=True, case_sensitive=False) as mocker:
817-
mocker.post(
818-
f"{base_url}orders/{mock_response_order.id}",
819-
json=mock_response_order.serialize(),
820-
status_code=200
821-
)
822-
mocker.get(
823-
f"{base_url}payments/{mock_response_payment.id}",
824-
json=mock_response_payment.serialize(),
825-
status_code=200
826-
)
827-
result = self.client_set.client.update_return_payment_state_after_successful_refund(
828-
mock_order.id,
829-
mock_order.version,
830-
mock_response_return_item.line_item_id,
831-
"pm_1",
832-
10000
833-
)
834-
835-
self.assertEqual(result.return_info[1].items[0].payment_state, ReturnPaymentState.REFUNDED)
836-
837843
def test_update_return_payment_state_exception(self):
838844
mock_error_response: CommercetoolsError = CommercetoolsError(
839845
"Could not update ReturnPaymentState", [

commerce_coordinator/apps/commercetools/utils.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212
from braze.client import BrazeClient
1313
from commercetools import CommercetoolsError
1414
from commercetools.platform.models import Customer, LineItem, Order, Payment, TransactionState, TransactionType
15-
from commercetools.platform.models import Order as CTOrder
16-
from commercetools.platform.models import Payment, TransactionState, TransactionType
1715
from django.conf import settings
1816
from django.urls import reverse
1917

@@ -170,14 +168,19 @@ def has_full_refund_transaction(payment: Payment):
170168
return True
171169
return False
172170

173-
def find_refund_transaction(order: CTOrder, amount: decimal):
171+
172+
def find_refund_transaction(order: Order, amount: decimal):
173+
"""
174+
Utility to find the refund transaction in a payment
175+
"""
174176
pmt = get_edx_successful_stripe_payment(order)
175177
for transaction in pmt.transactions:
176178
if transaction.type == TransactionType.REFUND:
177179
if decimal.Decimal(typed_money_to_string(transaction.amount, money_as_decimal_string=True)) == amount:
178180
return transaction.id
179181
return {}
180182

183+
181184
def translate_stripe_refund_status_to_transaction_status(stripe_refund_status: str):
182185
"""
183186
Utility to translate stripe's refund object's status attribute to a valid CT transaction state

0 commit comments

Comments
 (0)