File tree Expand file tree Collapse file tree
src/modules/get_transactions_by_user/app
tests/modules/get_transactions_by_user/app Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11from typing import List
2+
23from src .shared .domain .entities .transactions import Transaction
34from src .shared .domain .repositories .transaction_repository_interface import ITransactionRepository
4- from src .shared .domain . repositories . user_repository_interface import IUserRepository
5+ from src .shared .helpers . errors . domain_errors import EntityError
56from src .shared .helpers .errors .usecase_errors import NoItemsFound
7+ from src .shared .infra .external .observability .observability_aws import ObservabilityAWS
68
79
810class GetTransactionsByUserUsecase :
9-
10- def __init__ (self , repo_transaction : ITransactionRepository , repo_user : IUserRepository ):
11- self .repo_transaction = repo_transaction
12- self .repo_user = repo_user
11+ def __init__ (self , repo : ITransactionRepository , observability : ObservabilityAWS ):
12+ self .repo = repo
13+ self .observability = observability
1314
1415 def __call__ (self , user_id : str ) -> List [Transaction ]:
15- user = self .repo_user . get_user_by_id ( user_id )
16+ self .observability . log_usecase_in ( )
1617
17- transactions = self .repo_transaction .get_all_transactions_by_user (user_id )
18+ if type (user_id ) is not str :
19+ raise EntityError ("user_id" )
1820
19- if not transactions :
20- raise NoItemsFound ("transactions" )
21+ transactions = self .repo .get_all_transactions_by_user (user_id = user_id )
2122
23+ self .observability .log_usecase_out ()
2224 return transactions
Original file line number Diff line number Diff line change 1+ import pytest
2+
3+ from src .modules .get_transactions_by_user .app .get_transactions_by_user_usecase import GetTransactionsByUserUsecase
4+ from src .shared .helpers .errors .domain_errors import EntityError
5+ from src .shared .helpers .errors .usecase_errors import NoItemsFound
6+ from src .shared .infra .external .observability .observability_mock import ObservabilityMock
7+ from src .shared .infra .repositories .transaction_repository_mock import TransactionRepositoryMock
8+
9+ observability = ObservabilityMock (module_name = "get_transactions_by_user" )
10+
11+
12+ class Test_GetTransactionsByUserUsecase :
13+
14+ def test_get_transactions_by_user_success (self ):
15+ repo = TransactionRepositoryMock ()
16+ usecase = GetTransactionsByUserUsecase (repo = repo , observability = observability )
17+
18+ first_tx = repo .transactions [0 ]
19+ valid_user_id = first_tx .user_id
20+
21+ result = usecase (user_id = valid_user_id )
22+
23+ assert isinstance (result , list )
24+ assert all (tx .user_id == valid_user_id for tx in result )
25+
26+ def test_get_transactions_by_user_invalid_type (self ):
27+ repo = TransactionRepositoryMock ()
28+ usecase = GetTransactionsByUserUsecase (repo = repo , observability = observability )
29+
30+ with pytest .raises (EntityError ):
31+ usecase (user_id = 123 )
You can’t perform that action at this time.
0 commit comments