Skip to content

Commit a2d912c

Browse files
committed
refactor: TT-352 refactoring of the use case and endpoint to obtain activities
1 parent 7b582b7 commit a2d912c

File tree

6 files changed

+38
-27
lines changed

6 files changed

+38
-27
lines changed

V2/source/entry_points/flask_api/activities_endpoints.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@
55

66
class Activities(Resource):
77
def get(self):
8-
return [activity.__dict__ for activity in use_cases.get_list_activities()]
8+
activities = use_cases.GetActivitiesUseCase()
9+
return [activity.__dict__ for activity in activities.get_activities()]
910

1011

1112
class Activity(Resource):
1213
def get(self, activity_id: str):
1314
try:
14-
return use_cases.get_activity_by_id(activity_id).__dict__
15+
activity = use_cases.GetActivityUseCase()
16+
return activity.get_activity_by_id(activity_id).__dict__
1517
except AttributeError:
1618
return {'message': 'Activity not found'}, HTTPStatus.NOT_FOUND

V2/source/use_cases/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
from ._get_activities_use_case import get_list_activities
2-
from ._get_activity_by_id_use_case import get_activity_by_id
1+
from ._get_activities_use_case import GetActivitiesUseCase
2+
from ._get_activity_by_id_use_case import GetActivityUseCase

V2/source/use_cases/_get_activities_use_case.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
import typing
55

66

7-
def get_list_activities() -> typing.List[Activity]:
8-
activity_json = ActivitiesJsonDao('./V2/source/activities_data.json')
9-
activities = ActivityService(activity_json)
10-
11-
return activities.get_all()
7+
class GetActivitiesUseCase:
8+
def get_activities(self) -> typing.List[Activity]:
9+
activity_json = ActivitiesJsonDao('./V2/source/activities_data.json')
10+
activities = ActivityService(activity_json)
11+
return activities.get_all()

V2/source/use_cases/_get_activity_by_id_use_case.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
from V2.source.dtos.activity import Activity
44

55

6-
def get_activity_by_id(id: str) -> Activity:
7-
activity_json = ActivitiesJsonDao('./V2/source/activities_data.json')
8-
activity = ActivityService(activity_json)
9-
10-
return activity.get_by_id(id)
6+
class GetActivityUseCase:
7+
def get_activity_by_id(self, id: str) -> Activity:
8+
activity_json = ActivitiesJsonDao('./V2/source/activities_data.json')
9+
activity = ActivityService(activity_json)
10+
return activity.get_by_id(id)

V2/tests/unit/entry_points/flask/activity_class_endpoint_test.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,25 +26,30 @@
2626
def test__activities_class__uses_the_get_activities_use_case__to_retrieve_activities(
2727
mocker: MockFixture,
2828
):
29-
mocker.patch('V2.source.use_cases.get_list_activities', return_value=[])
29+
mocker.patch.object(
30+
use_cases.GetActivitiesUseCase,
31+
'get_activities',
32+
return_value=[],
33+
)
3034

3135
activities_class_endpoint = Activities()
3236
activities = activities_class_endpoint.get()
3337

34-
assert use_cases.get_list_activities.called
38+
assert use_cases.GetActivitiesUseCase.get_activities.called
3539
assert [] == activities
3640

3741

3842
def test__activity_class__uses_the_get_activity_by_id_use_case__to_retrieve__an_activity(
3943
mocker: MockFixture,
4044
):
41-
mocker.patch(
42-
'V2.source.use_cases.get_activity_by_id',
45+
mocker.patch.object(
46+
use_cases.GetActivityUseCase,
47+
'get_activity_by_id',
4348
return_value=fake_activity_dto,
4449
)
4550

4651
activity_class_endpoint = Activity()
4752
activity = activity_class_endpoint.get(valid_id)
4853

49-
assert use_cases.get_activity_by_id.called
54+
assert use_cases.GetActivityUseCase.get_activity_by_id.called
5055
assert fake_activity == activity

V2/tests/unit/use_cases/activities_use_case_test.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,27 +9,31 @@ def test__get_list_activities_function__uses_the_activities_service__to_retrieve
99
mocker: MockFixture,
1010
):
1111
expected_activities = mocker.Mock()
12-
mocker.patch(
13-
'V2.source.use_cases.get_list_activities',
12+
mocker.patch.object(
13+
use_cases.GetActivitiesUseCase,
14+
'get_activities',
1415
return_value=expected_activities,
1516
)
1617

17-
actual_activities = use_cases.get_list_activities()
18+
activities_use_case = use_cases.GetActivitiesUseCase()
19+
actual_activities = activities_use_case.get_activities()
1820

19-
assert use_cases.get_list_activities.called
21+
assert activities_use_case.get_activities.called
2022
assert expected_activities == actual_activities
2123

2224

2325
def test__get_activity_by_id_function__uses_the_activities_service__to_retrieve_activity(
2426
mocker: MockFixture,
2527
):
2628
expected_activity = mocker.Mock()
27-
mocker.patch(
28-
'V2.source.use_cases.get_activity_by_id',
29+
mocker.patch.object(
30+
use_cases.GetActivityUseCase,
31+
'get_activity_by_id',
2932
return_value=expected_activity,
3033
)
3134

32-
actual_activity = use_cases.get_activity_by_id(fake.uuid4())
35+
activity_use_case = use_cases.GetActivityUseCase()
36+
actual_activity = activity_use_case.get_activity_by_id(fake.uuid4())
3337

34-
assert use_cases.get_activity_by_id.called
38+
assert activity_use_case.get_activity_by_id.called
3539
assert expected_activity == actual_activity

0 commit comments

Comments
 (0)