diff --git a/fintoc/managers/v2/__init__.py b/fintoc/managers/v2/__init__.py index 1095269..f3cda57 100644 --- a/fintoc/managers/v2/__init__.py +++ b/fintoc/managers/v2/__init__.py @@ -1,6 +1,7 @@ """Init file for the v2 managers module of the SDK.""" from .account_numbers_manager import AccountNumbersManager +from .account_statements_manager import AccountStatementsManager from .account_verifications_manager import AccountVerificationsManager from .accounts_manager import AccountsManager from .checkout_sessions_manager import CheckoutSessionsManager diff --git a/fintoc/managers/v2/account_numbers_manager.py b/fintoc/managers/v2/account_numbers_manager.py index da92e10..30c9a58 100644 --- a/fintoc/managers/v2/account_numbers_manager.py +++ b/fintoc/managers/v2/account_numbers_manager.py @@ -7,4 +7,4 @@ class AccountNumbersManager(ManagerMixin): """Represents an account numbers manager.""" resource = "account_number" - methods = ["list", "get", "update", "create"] + methods = ["list", "get", "update", "create", "delete"] diff --git a/fintoc/managers/v2/account_statements_manager.py b/fintoc/managers/v2/account_statements_manager.py new file mode 100644 index 0000000..2865899 --- /dev/null +++ b/fintoc/managers/v2/account_statements_manager.py @@ -0,0 +1,11 @@ +# pylint: disable=duplicate-code +"""Module to hold the account statements manager.""" + +from fintoc.mixins import ManagerMixin + + +class AccountStatementsManager(ManagerMixin): + """Represents an account statements manager.""" + + resource = "account_statement" + methods = ["list"] diff --git a/fintoc/managers/v2/accounts_manager.py b/fintoc/managers/v2/accounts_manager.py index 83c18ae..299adad 100644 --- a/fintoc/managers/v2/accounts_manager.py +++ b/fintoc/managers/v2/accounts_manager.py @@ -1,6 +1,7 @@ # pylint: disable=duplicate-code """Module to hold the accounts manager.""" +from fintoc.managers.v2.account_statements_manager import AccountStatementsManager from fintoc.managers.v2.movements_manager import MovementsManager from fintoc.mixins import ManagerMixin @@ -13,8 +14,23 @@ class AccountsManager(ManagerMixin): def __init__(self, path, client): super().__init__(path, client) + self.__account_statements_manager = None self.__movements_manager = None + @property + def account_statements(self): + """Proxies the account statements manager.""" + if self.__account_statements_manager is None: + self.__account_statements_manager = AccountStatementsManager( + "/v2/accounts/{account_id}/account_statements", + self._client, + ) + return self.__account_statements_manager + + @account_statements.setter + def account_statements(self, new_value): # pylint: disable=no-self-use + raise NameError("Attribute name corresponds to a manager") + @property def movements(self): """Proxies the movements manager.""" diff --git a/fintoc/resources/v2/__init__.py b/fintoc/resources/v2/__init__.py index 4cd404d..90cac09 100644 --- a/fintoc/resources/v2/__init__.py +++ b/fintoc/resources/v2/__init__.py @@ -2,6 +2,7 @@ from .account import Account from .account_number import AccountNumber +from .account_statement import AccountStatement from .account_verification import AccountVerification from .entity import Entity from .invoice import Invoice diff --git a/fintoc/resources/v2/account_statement.py b/fintoc/resources/v2/account_statement.py new file mode 100644 index 0000000..cd4d907 --- /dev/null +++ b/fintoc/resources/v2/account_statement.py @@ -0,0 +1,7 @@ +"""Module to hold the AccountStatement resource.""" + +from fintoc.mixins import ResourceMixin + + +class AccountStatement(ResourceMixin): + """Represents a Fintoc Account Statement.""" diff --git a/fintoc/version.py b/fintoc/version.py index 7d35985..bb1896f 100644 --- a/fintoc/version.py +++ b/fintoc/version.py @@ -1,4 +1,4 @@ """Module to hold the version utilities.""" -version_info = (2, 18, 0) +version_info = (2, 19, 0) __version__ = ".".join([str(x) for x in version_info]) diff --git a/pyproject.toml b/pyproject.toml index b3e779a..8c48137 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "fintoc" -version = "2.18.0" +version = "2.19.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 86cce65..4eb529b 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -679,6 +679,14 @@ def test_v2_account_number_update(self): assert account_number.url == f"v2/account_numbers/{account_number_id}" assert account_number.json.metadata.test_key == metadata["test_key"] + def test_v2_account_number_delete(self): + """Test deleting an account number using v2 API.""" + account_number_id = "acno_Kasf91034gj1AD" + + result = self.fintoc.v2.account_numbers.delete(account_number_id) + + assert result == account_number_id + def test_v2_account_verification_list(self): """Test getting all account verifications using v2 API.""" account_verifications = list(self.fintoc.v2.account_verifications.list()) @@ -1052,6 +1060,20 @@ def test_v2_invoice_get(self): assert invoice.method == "get" assert invoice.url == f"v2/invoices/{invoice_id}" + def test_v2_account_statements_list(self): + """Test getting account statements from an account using v2 API.""" + account_id = "acc_12345" + account_statements = list( + self.fintoc.v2.accounts.account_statements.list(account_id=account_id) + ) + + assert len(account_statements) > 0 + for account_statement in account_statements: + assert account_statement.method == "get" + assert ( + account_statement.url == f"v2/accounts/{account_id}/account_statements" + ) + if __name__ == "__main__": pytest.main()