diff --git a/checkout_sdk/payments/payments.py b/checkout_sdk/payments/payments.py index ce555328..f97e04a0 100644 --- a/checkout_sdk/payments/payments.py +++ b/checkout_sdk/payments/payments.py @@ -883,6 +883,8 @@ class RefundRequest: # Voids class VoidRequest: + # If not specified, the full payment amount is voided (min 0, max 9999999999) + amount: int reference: str metadata: dict diff --git a/tests/payments/void_request_serialization_test.py b/tests/payments/void_request_serialization_test.py new file mode 100644 index 00000000..999b74e5 --- /dev/null +++ b/tests/payments/void_request_serialization_test.py @@ -0,0 +1,30 @@ +import json + +from checkout_sdk.json_serializer import JsonSerializer +from checkout_sdk.payments.payments import VoidRequest + + +def _serialize(obj): + return json.loads(json.dumps(obj, cls=JsonSerializer)) + + +class TestVoidRequestSerialization: + + def test_void_request_serializes_amount_when_set(self): + request = VoidRequest() + request.amount = 500 + request.reference = 'partial-void-reference' + + assert _serialize(request) == { + 'amount': 500, + 'reference': 'partial-void-reference', + } + + def test_void_request_omits_amount_when_not_set(self): + request = VoidRequest() + request.reference = 'full-void-reference' + + serialized = _serialize(request) + + assert 'amount' not in serialized + assert serialized == {'reference': 'full-void-reference'}