diff --git a/fintoc/core.py b/fintoc/core.py index c985731..44ab0a7 100644 --- a/fintoc/core.py +++ b/fintoc/core.py @@ -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__ @@ -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) diff --git a/fintoc/managers/v2/__init__.py b/fintoc/managers/v2/__init__.py index f3cda57..2f00f97 100644 --- a/fintoc/managers/v2/__init__.py +++ b/fintoc/managers/v2/__init__.py @@ -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 diff --git a/fintoc/managers/v2/products_manager.py b/fintoc/managers/v2/products_manager.py new file mode 100644 index 0000000..ec01bd3 --- /dev/null +++ b/fintoc/managers/v2/products_manager.py @@ -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"] diff --git a/fintoc/resources/v2/__init__.py b/fintoc/resources/v2/__init__.py index 90cac09..f3b793e 100644 --- a/fintoc/resources/v2/__init__.py +++ b/fintoc/resources/v2/__init__.py @@ -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 diff --git a/fintoc/resources/v2/product.py b/fintoc/resources/v2/product.py new file mode 100644 index 0000000..dd7e059 --- /dev/null +++ b/fintoc/resources/v2/product.py @@ -0,0 +1,7 @@ +"""Module to hold the Product resource.""" + +from fintoc.mixins import ResourceMixin + + +class Product(ResourceMixin): + """Represents a Fintoc Product.""" diff --git a/fintoc/version.py b/fintoc/version.py index bb1896f..29b60c4 100644 --- a/fintoc/version.py +++ b/fintoc/version.py @@ -1,4 +1,4 @@ """Module to hold the version utilities.""" -version_info = (2, 19, 0) +version_info = (2, 20, 0) __version__ = ".".join([str(x) for x in version_info]) diff --git a/pyproject.toml b/pyproject.toml index 8c48137..0b198e0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "fintoc" -version = "2.19.0" +version = "2.20.0" description = "The official Python client for the Fintoc API." authors = ["Daniel Leal ", "Nebil Kawas "] maintainers = ["Daniel Leal "] diff --git a/tests/test_integration.py b/tests/test_integration.py index 4eb529b..d60a056 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -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())