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_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/tests/test_integration.py b/tests/test_integration.py index 86cce65..a344010 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -1052,6 +1052,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()