diff --git a/fintoc/managers/v2/__init__.py b/fintoc/managers/v2/__init__.py index b8df4c2..5a56b9f 100644 --- a/fintoc/managers/v2/__init__.py +++ b/fintoc/managers/v2/__init__.py @@ -4,5 +4,6 @@ from .account_verifications_manager import AccountVerificationsManager from .accounts_manager import AccountsManager from .entities_manager import EntitiesManager +from .movements_manager import MovementsManager from .simulate_manager import SimulateManager from .transfers_manager import TransfersManager diff --git a/fintoc/managers/v2/accounts_manager.py b/fintoc/managers/v2/accounts_manager.py index 2953400..9606b5d 100644 --- a/fintoc/managers/v2/accounts_manager.py +++ b/fintoc/managers/v2/accounts_manager.py @@ -1,5 +1,7 @@ +# pylint: disable=duplicate-code """Module to hold the accounts manager.""" +from fintoc.managers.v2.movements_manager import MovementsManager from fintoc.mixins import ManagerMixin @@ -8,3 +10,21 @@ class AccountsManager(ManagerMixin): resource = "account" methods = ["list", "get", "create"] + + def __init__(self, path, client): + super().__init__(path, client) + self.__movements_manager = None + + @property + def movements(self): + """Proxies the movements manager.""" + if self.__movements_manager is None: + self.__movements_manager = MovementsManager( + "/v2/accounts/{account_id}/movements", + self._client, + ) + return self.__movements_manager + + @movements.setter + def movements(self, new_value): # pylint: disable=no-self-use + raise NameError("Attribute name corresponds to a manager") diff --git a/fintoc/managers/v2/movements_manager.py b/fintoc/managers/v2/movements_manager.py new file mode 100644 index 0000000..471ac97 --- /dev/null +++ b/fintoc/managers/v2/movements_manager.py @@ -0,0 +1,10 @@ +"""Module to hold the movements manager.""" + +from fintoc.mixins import ManagerMixin + + +class MovementsManager(ManagerMixin): + """Represents a movements manager.""" + + resource = "movement" + methods = ["list", "get"] diff --git a/fintoc/resources/v2/__init__.py b/fintoc/resources/v2/__init__.py index 8ff88e0..165377f 100644 --- a/fintoc/resources/v2/__init__.py +++ b/fintoc/resources/v2/__init__.py @@ -4,4 +4,5 @@ from .account_number import AccountNumber from .account_verification import AccountVerification from .entity import Entity +from .movement import Movement from .transfer import Transfer diff --git a/fintoc/resources/v2/movement.py b/fintoc/resources/v2/movement.py new file mode 100644 index 0000000..92cc05c --- /dev/null +++ b/fintoc/resources/v2/movement.py @@ -0,0 +1,8 @@ +# pylint: disable=duplicate-code +"""Module to hold the Movement resource.""" + +from fintoc.mixins import ResourceMixin + + +class Movement(ResourceMixin): + """Represents a Fintoc Movement.""" diff --git a/fintoc/version.py b/fintoc/version.py index 1c0abd9..fb0ee01 100644 --- a/fintoc/version.py +++ b/fintoc/version.py @@ -1,4 +1,4 @@ """Module to hold the version utilities.""" -version_info = (2, 10, 0) +version_info = (2, 11, 0) __version__ = ".".join([str(x) for x in version_info]) diff --git a/pyproject.toml b/pyproject.toml index 626e212..659de48 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "fintoc" -version = "2.10.0" +version = "2.11.0" description = "The official Python client for the Fintoc API." authors = ["Daniel Leal ", "Nebil Kawas "] maintainers = ["Daniel Leal "] @@ -36,4 +36,3 @@ pytest-cov = "^2.12.1" [tool.poetry.group.test.dependencies] freezegun = "^1.5.1" - diff --git a/tests/test_integration.py b/tests/test_integration.py index 4122644..159b8e9 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -743,6 +743,28 @@ def test_v2_transfer_return(self): assert result.url == "v2/transfers/return" assert result.json.transfer_id == transfer_id + def test_v2_account_movements_list(self): + """Test getting movements from an account using v2 API.""" + account_id = "test_account_id" + movements = list(self.fintoc.v2.accounts.movements.list(account_id=account_id)) + + assert len(movements) > 0 + for movement in movements: + assert movement.method == "get" + assert movement.url == f"v2/accounts/{account_id}/movements" + + def test_v2_account_movement_get(self): + """Test getting a specific movement from an account using v2 API.""" + account_id = "test_account_id" + movement_id = "test_movement_id" + + movement = self.fintoc.v2.accounts.movements.get( + movement_id, account_id=account_id + ) + + assert movement.method == "get" + assert movement.url == f"v2/accounts/{account_id}/movements/{movement_id}" + if __name__ == "__main__": pytest.main()