Skip to content

Commit dcf14df

Browse files
committed
refactor: TT-357 Refactor update and create activity
1 parent f8f633e commit dcf14df

File tree

22 files changed

+206
-89
lines changed

22 files changed

+206
-89
lines changed

V2/.flake8

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
[flake8]
2-
exclude = .git,__pycache__,./node_modules,
2+
exclude = .git,__pycache__,./node_modules,.venv
33
max-complexity = 10
44
max_line_length = 120

V2/create_activity/function.json

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"disabled": false,
3+
"bindings": [
4+
{
5+
"type": "httpTrigger",
6+
"direction": "in",
7+
"name": "req",
8+
"route": "activities/",
9+
"authLevel": "anonymous",
10+
"methods": [
11+
"POST"
12+
]
13+
},
14+
{
15+
"type": "http",
16+
"direction": "out",
17+
"name": "$return"
18+
}
19+
],
20+
"entryPoint": "create_activity",
21+
"scriptFile": "../time_tracker/activities/interface.py"
22+
}

V2/delete_activity/function.json

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"disabled": false,
3+
"bindings": [
4+
{
5+
"type": "httpTrigger",
6+
"direction": "in",
7+
"name": "req",
8+
"route": "activities/{id}",
9+
"authLevel": "anonymous",
10+
"methods": [
11+
"DELETE"
12+
]
13+
},
14+
{
15+
"type": "http",
16+
"direction": "out",
17+
"name": "$return"
18+
}
19+
],
20+
"entryPoint": "delete_activity",
21+
"scriptFile": "../time_tracker/activities/interface.py"
22+
}

V2/get_activities/function.json

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"disabled": false,
3+
"bindings": [
4+
{
5+
"type": "httpTrigger",
6+
"direction": "in",
7+
"name": "req",
8+
"route": "activities/{id:?}",
9+
"authLevel": "anonymous",
10+
"methods": [
11+
"GET"
12+
]
13+
},
14+
{
15+
"type": "http",
16+
"direction": "out",
17+
"name": "$return"
18+
}
19+
],
20+
"entryPoint": "get_activities",
21+
"scriptFile": "../time_tracker/activities/interface.py"
22+
}

V2/tests/api/azure/activity_azure_endpoints_test.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,14 @@
77
import time_tracker.activities._application._activities as azure_activities
88
import time_tracker.activities._infrastructure as infrastructure
99
from time_tracker._infrastructure import DB
10+
from time_tracker.activities import _domain
1011

1112
ACTIVITY_URL = '/api/activities/'
1213

1314

1415
@pytest.fixture(name='insert_activity')
1516
def _insert_activity() -> dict:
16-
def _new_activity(activity: dict, database: DB):
17+
def _new_activity(activity: _domain.Activity, database: DB):
1718
dao = infrastructure.ActivitiesSQLDao(database)
1819
new_activity = dao.create(activity)
1920
return new_activity.__dict__
@@ -26,8 +27,8 @@ def test__activity_azure_endpoint__returns_all_activities(
2627
fake_database = create_fake_database
2728
existent_activities = [activity_factory(), activity_factory()]
2829
inserted_activities = [
29-
insert_activity(existent_activities[0].__dict__, fake_database),
30-
insert_activity(existent_activities[1].__dict__, fake_database)
30+
insert_activity(existent_activities[0], fake_database),
31+
insert_activity(existent_activities[1], fake_database)
3132
]
3233

3334
azure_activities._get_activities.DATABASE = fake_database
@@ -44,7 +45,7 @@ def test__activity_azure_endpoint__returns_an_activity__when_activity_matches_it
4445
):
4546
fake_database = create_fake_database
4647
existent_activity = activity_factory()
47-
inserted_activity = insert_activity(existent_activity.__dict__, fake_database)
48+
inserted_activity = insert_activity(existent_activity, fake_database)
4849

4950
azure_activities._get_activities.DATABASE = fake_database
5051
req = func.HttpRequest(
@@ -66,7 +67,7 @@ def test__activity_azure_endpoint__returns_an_activity_with_inactive_status__whe
6667
):
6768
fake_database = create_fake_database
6869
existent_activity = activity_factory()
69-
inserted_activity = insert_activity(existent_activity.__dict__, fake_database)
70+
inserted_activity = insert_activity(existent_activity, fake_database)
7071

7172
azure_activities._delete_activity.DATABASE = fake_database
7273
req = func.HttpRequest(
@@ -89,7 +90,7 @@ def test__update_activity_azure_endpoint__returns_an_activity__when_found_an_act
8990
):
9091
fake_database = create_fake_database
9192
existent_activity = activity_factory()
92-
inserted_activity = insert_activity(existent_activity.__dict__, fake_database)
93+
inserted_activity = insert_activity(existent_activity, fake_database)
9394

9495
azure_activities._update_activity.DATABASE = fake_database
9596
activity_body = {"description": Faker().sentence()}

V2/tests/conftest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# flake8: noqa
2-
from api_fixtures import _activity_factory, _create_fake_dao, _create_fake_database
2+
from fixtures import _activity_factory, _create_fake_dao, _create_fake_database

V2/tests/integration/daos/activities_sql_dao_test.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import pytest
22
import typing
3+
from faker import Faker
34

45
import time_tracker.activities._domain as domain
56
import time_tracker.activities._infrastructure as infrastructure
@@ -8,7 +9,7 @@
89

910
@pytest.fixture(name='insert_activity')
1011
def _insert_activity() -> domain.Activity:
11-
def _new_activity(activity: dict, dao: domain.ActivitiesDao):
12+
def _new_activity(activity: domain.Activity, dao: domain.ActivitiesDao):
1213
new_activity = dao.create(activity)
1314
return new_activity
1415
return _new_activity
@@ -29,7 +30,7 @@ def test__create_activity__returns_a_activity_dto__when_saves_correctly_with_sql
2930
dao = create_fake_dao
3031
existent_activity = activity_factory()
3132

32-
inserted_activity = dao.create(existent_activity.__dict__)
33+
inserted_activity = dao.create(existent_activity)
3334

3435
assert isinstance(inserted_activity, domain.Activity)
3536
assert inserted_activity == existent_activity
@@ -40,13 +41,14 @@ def test_update__returns_an_update_activity__when_an_activity_matching_its_id_is
4041
):
4142
dao = create_fake_dao
4243
existent_activity = activity_factory()
43-
inserted_activity = insert_activity(existent_activity.__dict__, dao)
44+
inserted_activity = insert_activity(existent_activity, dao)
4445

45-
updated_activity = dao.update(inserted_activity.id, {'description': 'test demo 2 create an new activity'})
46+
expected_description = Faker().sentence()
47+
updated_activity = dao.update(inserted_activity.id, None, expected_description, None, None)
4648

4749
assert isinstance(updated_activity, domain.Activity)
4850
assert updated_activity.id == inserted_activity.id
49-
assert updated_activity.description == 'test demo 2 create an new activity'
51+
assert updated_activity.description == expected_description
5052

5153

5254
def test_update__returns_none__when_no_activity_matching_its_id_is_found_with_sql_database(
@@ -55,7 +57,7 @@ def test_update__returns_none__when_no_activity_matching_its_id_is_found_with_sq
5557
dao = create_fake_dao
5658
existent_activity = activity_factory()
5759

58-
results = dao.update(existent_activity.id, {'description': 'test demo'})
60+
results = dao.update(existent_activity.id, Faker().name(), None, None, None)
5961

6062
assert results is None
6163

@@ -66,8 +68,8 @@ def test__get_all__returns_a_list_of_activity_dto_objects__when_one_or_more_acti
6668
dao = create_fake_dao
6769
existent_activities = [activity_factory(), activity_factory()]
6870
inserted_activities = [
69-
insert_activity(existent_activities[0].__dict__, dao),
70-
insert_activity(existent_activities[1].__dict__, dao)
71+
insert_activity(existent_activities[0], dao),
72+
insert_activity(existent_activities[1], dao)
7173
]
7274

7375
activities = dao.get_all()
@@ -81,7 +83,7 @@ def test_get_by_id__returns_an_activity_dto__when_found_one_activity_that_matche
8183
):
8284
dao = create_fake_dao
8385
existent_activity = activity_factory()
84-
inserted_activity = insert_activity(existent_activity.__dict__, dao)
86+
inserted_activity = insert_activity(existent_activity, dao)
8587

8688
activity = dao.get_by_id(inserted_activity.id)
8789

@@ -115,7 +117,7 @@ def test_delete__returns_an_activity_with_inactive_status__when_an_activity_matc
115117
):
116118
dao = create_fake_dao
117119
existent_activity = activity_factory()
118-
inserted_activity = insert_activity(existent_activity.__dict__, dao)
120+
inserted_activity = insert_activity(existent_activity, dao)
119121

120122
activity = dao.delete(inserted_activity.id)
121123

V2/tests/unit/services/activity_service_test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def test__update_activity__uses_the_activity_dao__to_update_one_activity(
5353
activity_service = ActivityService(activity_dao)
5454

5555
updated_activity = activity_service.update(
56-
Faker().uuid4(), Faker().pydict()
56+
Faker().uuid4(), Faker().name(), Faker().sentence(), Faker().pyint(), Faker().pybool()
5757
)
5858

5959
assert activity_dao.update.called

V2/tests/unit/use_cases/activities_use_case_test.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
from time_tracker.activities._domain import _use_cases
2-
from pytest_mock import MockFixture
31
from faker import Faker
2+
from pytest_mock import MockFixture
3+
4+
from time_tracker.activities._domain import _use_cases
45

56
fake = Faker()
67

@@ -36,15 +37,15 @@ def test__get_activity_by_id_function__uses_the_activity_service__to_retrieve_ac
3637

3738

3839
def test__create_activity_function__uses_the_activities_service__to_create_activity(
39-
mocker: MockFixture,
40+
mocker: MockFixture, activity_factory
4041
):
4142
expected_activity = mocker.Mock()
4243
activity_service = mocker.Mock(
4344
create=mocker.Mock(return_value=expected_activity)
4445
)
4546

4647
activity_use_case = _use_cases.CreateActivityUseCase(activity_service)
47-
actual_activity = activity_use_case.create_activity(fake.pydict())
48+
actual_activity = activity_use_case.create_activity(activity_factory())
4849

4950
assert activity_service.create.called
5051
assert expected_activity == actual_activity
@@ -66,16 +67,17 @@ def test__delete_activity_function__uses_the_activity_service__to_change_activit
6667

6768

6869
def test__update_activity_function__uses_the_activities_service__to_update_an_activity(
69-
mocker: MockFixture,
70+
mocker: MockFixture, activity_factory
7071
):
7172
expected_activity = mocker.Mock()
7273
activity_service = mocker.Mock(
7374
update=mocker.Mock(return_value=expected_activity)
7475
)
76+
new_activity = activity_factory()
7577

7678
activity_use_case = _use_cases.UpdateActivityUseCase(activity_service)
7779
updated_activity = activity_use_case.update_activity(
78-
fake.uuid4(), fake.pydict()
80+
fake.uuid4(), new_activity.name, new_activity.description, new_activity.status, new_activity.deleted
7981
)
8082

8183
assert activity_service.update.called

0 commit comments

Comments
 (0)