Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion fintoc/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
from fintoc.managers.v2 import CustomersManager, EntitiesManager
from fintoc.managers.v2 import InvoicesManager as InvoicesManagerV2
from fintoc.managers.v2 import PaymentIntentsManager as PaymentIntentsManagerV2
from fintoc.managers.v2 import PaymentMethodsManager, SimulateManager
from fintoc.managers.v2 import PaymentMethodsManager, ProductsManager, SimulateManager
from fintoc.managers.v2 import SubscriptionsManager as SubscriptionsManagerV2
from fintoc.managers.v2 import TransfersManager
from fintoc.version import __version__
Expand Down Expand Up @@ -89,4 +89,5 @@ def __init__(self, client):
self.invoices = InvoicesManagerV2("/v2/invoices", client)
self.payment_intents = PaymentIntentsManagerV2("/v2/payment_intents", client)
self.payment_methods = PaymentMethodsManager("/v2/payment_methods", client)
self.products = ProductsManager("/v2/products", client)
self.subscriptions = SubscriptionsManagerV2("/v2/subscriptions", client)
1 change: 1 addition & 0 deletions fintoc/managers/v2/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from .movements_manager import MovementsManager
from .payment_intents_manager import PaymentIntentsManager
from .payment_methods_manager import PaymentMethodsManager
from .products_manager import ProductsManager
from .simulate_manager import SimulateManager
from .subscriptions_manager import SubscriptionsManager
from .transfers_manager import TransfersManager
10 changes: 10 additions & 0 deletions fintoc/managers/v2/products_manager.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
"""Module to hold the products manager."""

from fintoc.mixins import ManagerMixin


class ProductsManager(ManagerMixin):
"""Represents a products manager."""

resource = "product"
methods = ["create", "get", "list"]
1 change: 1 addition & 0 deletions fintoc/resources/v2/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,6 @@
from .invoice import Invoice
from .movement import Movement
from .payment_method import PaymentMethod
from .product import Product
from .subscription import Subscription
from .transfer import Transfer
7 changes: 7 additions & 0 deletions fintoc/resources/v2/product.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
"""Module to hold the Product resource."""

from fintoc.mixins import ResourceMixin


class Product(ResourceMixin):
"""Represents a Fintoc Product."""
34 changes: 34 additions & 0 deletions tests/test_integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -1042,6 +1042,40 @@ def test_v2_subscription_cancel(self):
assert result.method == "post"
assert result.url == f"v2/subscriptions/{subscription_id}/cancel"

def test_v2_products_list(self):
"""Test getting all products using v2 API."""
products = list(self.fintoc.v2.products.list())

assert len(products) > 0
for product in products:
assert product.method == "get"
assert product.url == "v2/products"

def test_v2_product_get(self):
"""Test getting a specific product using v2 API."""
product_id = "test_product_id"

product = self.fintoc.v2.products.get(product_id)

assert product.method == "get"
assert product.url == f"v2/products/{product_id}"

def test_v2_product_create(self):
"""Test creating a product using v2 API."""
product_data = {
"name": "Test Product",
"amount": 10000,
"currency": "CLP",
}

product = self.fintoc.v2.products.create(**product_data)

assert product.method == "post"
assert product.url == "v2/products"
assert product.json.name == product_data["name"]
assert product.json.amount == product_data["amount"]
assert product.json.currency == product_data["currency"]

def test_v2_invoices_list(self):
"""Test getting all invoices using v2 API."""
invoices = list(self.fintoc.v2.invoices.list())
Expand Down
Loading