Skip to content

Commit 964e76e

Browse files
authored
Merge pull request #100 from fintoc-com/master
2.12.0
2 parents d40f638 + a0c787e commit 964e76e

7 files changed

Lines changed: 71 additions & 2 deletions

File tree

fintoc/core.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
LinksManager,
1313
PaymentIntentsManager,
1414
RefreshIntentsManager,
15+
RefundsManager,
1516
SubscriptionIntentsManager,
1617
SubscriptionsManager,
1718
TaxReturnsManager,
@@ -49,6 +50,7 @@ def __init__(self, api_key, api_version=None, jws_private_key=None):
4950
self.payment_intents = PaymentIntentsManager(
5051
"/v1/payment_intents", self._client
5152
)
53+
self.refunds = RefundsManager("/v1/refunds", self._client)
5254
self.subscriptions = SubscriptionsManager("/v1/subscriptions", self._client)
5355
self.subscription_intents = SubscriptionIntentsManager(
5456
"/v1/subscription_intents", self._client

fintoc/managers/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from .movements_manager import MovementsManager
99
from .payment_intents_manager import PaymentIntentsManager
1010
from .refresh_intents_manager import RefreshIntentsManager
11+
from .refunds_manager import RefundsManager
1112
from .subscription_intents_manager import SubscriptionIntentsManager
1213
from .subscriptions_manager import SubscriptionsManager
1314
from .tax_returns_manager import TaxReturnsManager

fintoc/managers/refunds_manager.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
"""Module to hold the refunds manager."""
2+
3+
from fintoc.mixins import ManagerMixin
4+
5+
6+
class RefundsManager(ManagerMixin):
7+
8+
"""Represents a refunds manager."""
9+
10+
resource = "refund"
11+
methods = ["list", "get", "create", "cancel"]
12+
13+
def _cancel(self, identifier, **kwargs):
14+
"""Expire a refund."""
15+
path = f"{self._build_path(**kwargs)}/{identifier}/cancel"
16+
return self._create(path_=path, **kwargs)

fintoc/resources/refund.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
"""Module to hold the Refund resource."""
2+
3+
from fintoc.mixins import ResourceMixin
4+
5+
6+
class Refund(ResourceMixin):
7+
"""Represents a Fintoc Refund."""

fintoc/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
"""Module to hold the version utilities."""
22

3-
version_info = (2, 11, 0)
3+
version_info = (2, 12, 0)
44
__version__ = ".".join([str(x) for x in version_info])

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "fintoc"
3-
version = "2.11.0"
3+
version = "2.12.0"
44
description = "The official Python client for the Fintoc API."
55
authors = ["Daniel Leal <daniel@fintoc.com>", "Nebil Kawas <nebil@uc.cl>"]
66
maintainers = ["Daniel Leal <daniel@fintoc.com>"]

tests/test_integration.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,49 @@ def test_payment_intent_expire(self):
392392
assert result.method == "post"
393393
assert result.url == f"v1/payment_intents/{payment_intent_id}/expire"
394394

395+
def test_refund_list(self):
396+
"""Test getting all refunds."""
397+
refunds = list(self.fintoc.refunds.list())
398+
399+
assert len(refunds) > 0
400+
for refund in refunds:
401+
assert refund.method == "get"
402+
assert refund.url == "v1/refunds"
403+
404+
def test_refund_get(self):
405+
"""Test getting a specific refund."""
406+
refund_id = "test_refund_id"
407+
408+
refund = self.fintoc.refunds.get(refund_id)
409+
410+
assert refund.method == "get"
411+
assert refund.url == f"v1/refunds/{refund_id}"
412+
413+
def test_refund_create(self):
414+
"""Test creating a refund."""
415+
refund_data = {
416+
"resource_type": "payment_intent",
417+
"resource_id": "pi_30yWq311fOLrAAKkSH1bvODVLGa",
418+
"amount": 1000,
419+
}
420+
421+
refund = self.fintoc.refunds.create(**refund_data)
422+
423+
assert refund.method == "post"
424+
assert refund.url == "v1/refunds"
425+
assert refund.json.resource_type == refund_data["resource_type"]
426+
assert refund.json.resource_id == refund_data["resource_id"]
427+
assert refund.json.amount == refund_data["amount"]
428+
429+
def test_refund_cancel(self):
430+
"""Test canceling a refund."""
431+
refund_id = "ref_QmbpWzP1HOngN3X7"
432+
433+
refund = self.fintoc.refunds.cancel(refund_id)
434+
435+
assert refund.method == "post"
436+
assert refund.url == f"v1/refunds/{refund_id}/cancel"
437+
395438
def test_subscription_intents_list(self):
396439
"""Test getting all subscription intents."""
397440
subscription_intents = list(self.fintoc.subscription_intents.list())

0 commit comments

Comments
 (0)