Skip to content

Commit f7757ca

Browse files
committed
refactor: TT-430 add parse status number to string value
1 parent aedf3d2 commit f7757ca

File tree

9 files changed

+42
-19
lines changed

9 files changed

+42
-19
lines changed

V2/tests/api/azure/activity_azure_endpoints_test.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import azure.functions as func
55

66
import time_tracker.activities._application._activities as azure_activities
7+
from time_tracker.activities._application._activities.utils import parse_status_to_string_for_ui as parse_status
8+
from time_tracker.utils.enums import StatusEnums
79

810
ACTIVITY_URL = '/api/activities/'
911

@@ -13,8 +15,8 @@ def test__activity_azure_endpoint__returns_all_activities(
1315
):
1416
existent_activities = [activity_factory(), activity_factory()]
1517
inserted_activities = [
16-
insert_activity(existent_activities[0], test_db).__dict__,
17-
insert_activity(existent_activities[1], test_db).__dict__
18+
parse_status(insert_activity(existent_activities[0], test_db).__dict__),
19+
parse_status(insert_activity(existent_activities[1], test_db).__dict__)
1820
]
1921

2022
req = func.HttpRequest(method='GET', body=None, url=ACTIVITY_URL)
@@ -29,7 +31,7 @@ def test__activity_azure_endpoint__returns_an_activity__when_activity_matches_it
2931
test_db, activity_factory, insert_activity
3032
):
3133
existent_activity = activity_factory()
32-
inserted_activity = insert_activity(existent_activity, test_db).__dict__
34+
inserted_activity = parse_status(insert_activity(existent_activity, test_db).__dict__)
3335

3436
req = func.HttpRequest(
3537
method='GET',
@@ -62,15 +64,15 @@ def test__activity_azure_endpoint__returns_an_activity_with_inactive_status__whe
6264
activity_json_data = json.loads(response.get_body().decode("utf-8"))
6365

6466
assert response.status_code == 200
65-
assert activity_json_data['status'] == 0
67+
assert activity_json_data['status'] == StatusEnums(0).name
6668
assert activity_json_data['deleted'] is True
6769

6870

6971
def test__update_activity_azure_endpoint__returns_an_activity__when_found_an_activity_to_update(
7072
test_db, activity_factory, insert_activity
7173
):
7274
existent_activity = activity_factory()
73-
inserted_activity = insert_activity(existent_activity, test_db).__dict__
75+
inserted_activity = parse_status(insert_activity(existent_activity, test_db).__dict__)
7476

7577
activity_body = {"description": Faker().sentence()}
7678
req = func.HttpRequest(
@@ -108,4 +110,4 @@ def test__activity_azure_endpoint__creates_an_activity__when_activity_has_all_at
108110
activity_body['id'] = activitiy_json_data['id']
109111

110112
assert response.status_code == 201
111-
assert activitiy_json_data == activity_body
113+
assert activitiy_json_data == parse_status(activity_body)

V2/time_tracker/activities/_application/_activities/_create_activity.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from ... import _domain
88
from ... import _infrastructure
99
from time_tracker._infrastructure import DB
10+
from .utils import parse_status_to_string_for_ui as parse_status
1011

1112

1213
def create_activity(req: func.HttpRequest) -> func.HttpResponse:
@@ -27,8 +28,8 @@ def create_activity(req: func.HttpRequest) -> func.HttpResponse:
2728
id=None,
2829
name=activity_data['name'],
2930
description=activity_data['description'],
30-
status=activity_data['status'],
31-
deleted=activity_data['deleted']
31+
status=None,
32+
deleted=None
3233
)
3334

3435
created_activity = use_case.create_activity(activity_to_create)
@@ -39,15 +40,16 @@ def create_activity(req: func.HttpRequest) -> func.HttpResponse:
3940
mimetype="application/json",
4041
)
4142
return func.HttpResponse(
42-
body=json.dumps(created_activity.__dict__),
43+
body=json.dumps(parse_status(created_activity.__dict__)),
4344
status_code=201,
4445
mimetype="application/json"
4546
)
4647

4748

4849
def _validate_activity(activity_data: dict) -> typing.List[str]:
49-
activity_fields = [field.name for field in dataclasses.fields(_domain.Activity)]
50-
missing_keys = [field for field in activity_fields if field not in activity_data]
50+
activity_fields = [field for field in dataclasses.fields(_domain.Activity)]
51+
missing_keys = [field.name for field in activity_fields
52+
if (field.name not in activity_data) and (field.type != typing.Optional[field.type])]
5153
return [
5254
f'The {missing_key} key is missing in the input data'
5355
for missing_key in missing_keys

V2/time_tracker/activities/_application/_activities/_delete_activity.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33

44
import azure.functions as func
55

6+
67
from ... import _domain
78
from ... import _infrastructure
89
from time_tracker._infrastructure import DB
10+
from .utils import parse_status_to_string_for_ui as parse_status
911

1012

1113
def delete_activity(req: func.HttpRequest) -> func.HttpResponse:
@@ -32,7 +34,7 @@ def _delete(activity_id: int) -> str:
3234
_create_activity_service(database)
3335
)
3436
activity = activity_use_case.delete_activity(activity_id)
35-
return json.dumps(activity.__dict__) if activity else b'Not found'
37+
return json.dumps(parse_status(activity.__dict__)) if activity else b'Not found'
3638

3739

3840
def _create_activity_service(db: DB) -> _domain.ActivityService:

V2/time_tracker/activities/_application/_activities/_get_activities.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from ... import _domain
77
from ... import _infrastructure
88
from time_tracker._infrastructure import DB
9+
from .utils import parse_status_to_string_for_ui as parse_status
910

1011

1112
def get_activities(req: func.HttpRequest) -> func.HttpResponse:
@@ -39,7 +40,7 @@ def _get_by_id(activity_id: int, database: DB) -> str:
3940
)
4041
activity = activity_use_case.get_activity_by_id(activity_id)
4142

42-
return json.dumps(activity.__dict__) if activity else b'Not Found'
43+
return json.dumps(parse_status(activity.__dict__)) if activity else b'Not Found'
4344

4445

4546
def _get_all(database: DB) -> str:
@@ -48,7 +49,7 @@ def _get_all(database: DB) -> str:
4849
)
4950
return json.dumps(
5051
[
51-
activity.__dict__
52+
parse_status(activity.__dict__)
5253
for activity in activities_use_case.get_activities()
5354
]
5455
)

V2/time_tracker/activities/_application/_activities/_update_activity.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from ... import _domain
88
from ... import _infrastructure
99
from time_tracker._infrastructure import DB
10+
from .utils import parse_status_to_string_for_ui as parse_status
1011

1112

1213
def update_activity(req: func.HttpRequest) -> func.HttpResponse:
@@ -45,7 +46,7 @@ def _update(activity_id: int, activity_data: dict) -> str:
4546
activity_data.get("status"),
4647
activity_data.get("deleted")
4748
)
48-
return json.dumps(activity.__dict__) if activity else b'Not Found'
49+
return json.dumps(parse_status(activity.__dict__)) if activity else b'Not Found'
4950

5051

5152
def _create_activity_service(db: DB) -> _domain.ActivityService:
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from time_tracker.utils.enums import StatusEnums
2+
3+
4+
def parse_status_to_string_for_ui(activity: dict) -> dict:
5+
activity['status'] = StatusEnums(activity['status']).name
6+
return activity
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1+
import typing
2+
13
from dataclasses import dataclass
24

35

46
@dataclass(frozen=True)
57
class Activity:
6-
id: int
8+
id: typing.Optional[int]
79
name: str
810
description: str
9-
deleted: bool
10-
status: int
11+
deleted: typing.Optional[bool]
12+
status: typing.Optional[int]
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
# flake8: noqa
2-
from .response_enums import ResponseEnums
2+
from .response_enums import ResponseEnums
3+
from .status_enums import StatusEnums
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from enum import Enum
2+
3+
4+
class StatusEnums(Enum):
5+
inactive = 0
6+
active = 1

0 commit comments

Comments
 (0)