Skip to content

Commit dc8ebc1

Browse files
authored
Merge pull request #108 from fintoc-com/feat-add-checkout-session-v2
Feat add checkout session v2
2 parents 2e482af + e113e21 commit dc8ebc1

5 files changed

Lines changed: 76 additions & 1 deletion

File tree

fintoc/core.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,9 @@
2121
)
2222
from fintoc.managers.v2 import AccountNumbersManager
2323
from fintoc.managers.v2 import AccountsManager as AccountsManagerV2
24+
from fintoc.managers.v2 import AccountVerificationsManager
25+
from fintoc.managers.v2 import CheckoutSessionsManager as CheckoutSessionsManagerV2
2426
from fintoc.managers.v2 import (
25-
AccountVerificationsManager,
2627
CustomersManager,
2728
EntitiesManager,
2829
SimulateManager,
@@ -82,3 +83,6 @@ def __init__(self, client):
8283
self.customers = CustomersManager("/v2/customers", client)
8384
self.entities = EntitiesManager("/v2/entities", client)
8485
self.simulate = SimulateManager("/v2/simulate", client)
86+
self.checkout_sessions = CheckoutSessionsManagerV2(
87+
"/v2/checkout_sessions", client
88+
)

fintoc/managers/v2/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from .account_numbers_manager import AccountNumbersManager
44
from .account_verifications_manager import AccountVerificationsManager
55
from .accounts_manager import AccountsManager
6+
from .checkout_sessions_manager import CheckoutSessionsManager
67
from .customers_manager import CustomersManager
78
from .entities_manager import EntitiesManager
89
from .movements_manager import MovementsManager
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"""Module to hold the checkout sessions manager."""
2+
3+
from fintoc.mixins import ManagerMixin
4+
5+
6+
class CheckoutSessionsManager(ManagerMixin):
7+
"""Represents a checkout sessions manager."""
8+
9+
resource = "checkout_session"
10+
methods = ["list", "get", "create", "expire"]
11+
12+
def _expire(self, identifier, **kwargs):
13+
"""Expire a checkout session."""
14+
path = f"{self._build_path(**kwargs)}/{identifier}/expire"
15+
return self._create(path_=path, **kwargs)
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# pylint: disable=duplicate-code
2+
"""Module to hold the CheckoutSession resource."""
3+
4+
from fintoc.mixins import ResourceMixin
5+
6+
7+
class CheckoutSession(ResourceMixin):
8+
"""Represents a Fintoc CheckoutSession."""

tests/test_integration.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -906,6 +906,53 @@ def test_v2_account_movement_get(self):
906906
assert movement.method == "get"
907907
assert movement.url == f"v2/accounts/{account_id}/movements/{movement_id}"
908908

909+
def test_v2_checkout_session_list(self):
910+
"""Test getting all checkout sessions using v2 API."""
911+
checkout_sessions = list(self.fintoc.v2.checkout_sessions.list())
912+
913+
assert len(checkout_sessions) > 0
914+
for checkout_session in checkout_sessions:
915+
assert checkout_session.method == "get"
916+
assert checkout_session.url == "v2/checkout_sessions"
917+
918+
def test_v2_checkout_session_create(self):
919+
"""Test creating a checkout session using v2 API."""
920+
checkout_session_data = {
921+
"amount": 5000,
922+
"currency": "CLP",
923+
"success_url": "https://example.com/success",
924+
"cancel_url": "https://example.com/cancel",
925+
}
926+
927+
checkout_session = self.fintoc.v2.checkout_sessions.create(
928+
**checkout_session_data
929+
)
930+
931+
assert checkout_session.method == "post"
932+
assert checkout_session.url == "v2/checkout_sessions"
933+
assert checkout_session.json.amount == checkout_session_data["amount"]
934+
assert checkout_session.json.currency == checkout_session_data["currency"]
935+
assert checkout_session.json.success_url == checkout_session_data["success_url"]
936+
assert checkout_session.json.cancel_url == checkout_session_data["cancel_url"]
937+
938+
def test_v2_checkout_session_get(self):
939+
"""Test getting a specific checkout session using v2 API."""
940+
checkout_session_id = "test_checkout_session_id"
941+
942+
checkout_session = self.fintoc.v2.checkout_sessions.get(checkout_session_id)
943+
944+
assert checkout_session.method == "get"
945+
assert checkout_session.url == f"v2/checkout_sessions/{checkout_session_id}"
946+
947+
def test_v2_checkout_session_expire(self):
948+
"""Test expiring a checkout session using v2 API."""
949+
checkout_session_id = "test_checkout_session_id"
950+
951+
result = self.fintoc.v2.checkout_sessions.expire(checkout_session_id)
952+
953+
assert result.method == "post"
954+
assert result.url == f"v2/checkout_sessions/{checkout_session_id}/expire"
955+
909956

910957
if __name__ == "__main__":
911958
pytest.main()

0 commit comments

Comments
 (0)