|
1 |
| -from time_tracker.activities._application import _activities as activities |
| 1 | +import pytest |
| 2 | +import json |
2 | 3 | from faker import Faker
|
3 | 4 |
|
4 | 5 | import azure.functions as func
|
5 |
| -import json |
6 | 6 |
|
| 7 | +import time_tracker.activities._application._activities as azure_activities |
| 8 | +import time_tracker.activities._infrastructure as infrastructure |
| 9 | +from time_tracker._infrastructure import DB |
| 10 | +from time_tracker.activities import _domain |
| 11 | + |
| 12 | +ACTIVITY_URL = '/api/activities/' |
7 | 13 |
|
8 |
| -ACTIVITY_URL = "/api/activities/" |
| 14 | + |
| 15 | +@pytest.fixture(name='insert_activity') |
| 16 | +def _insert_activity() -> dict: |
| 17 | + def _new_activity(activity: _domain.Activity, database: DB): |
| 18 | + dao = infrastructure.ActivitiesSQLDao(database) |
| 19 | + new_activity = dao.create(activity) |
| 20 | + return new_activity.__dict__ |
| 21 | + return _new_activity |
9 | 22 |
|
10 | 23 |
|
11 | 24 | def test__activity_azure_endpoint__returns_all_activities(
|
12 |
| - create_temp_activities, |
| 25 | + create_fake_database, activity_factory, insert_activity |
13 | 26 | ):
|
14 |
| - activities_json, tmp_directory = create_temp_activities |
15 |
| - activities._get_activities.JSON_PATH = tmp_directory |
16 |
| - req = func.HttpRequest(method="GET", body=None, url=ACTIVITY_URL) |
17 |
| - |
18 |
| - response = activities.get_activities(req) |
| 27 | + fake_database = create_fake_database |
| 28 | + existent_activities = [activity_factory(), activity_factory()] |
| 29 | + inserted_activities = [ |
| 30 | + insert_activity(existent_activities[0], fake_database), |
| 31 | + insert_activity(existent_activities[1], fake_database) |
| 32 | + ] |
| 33 | + |
| 34 | + azure_activities._get_activities.DATABASE = fake_database |
| 35 | + req = func.HttpRequest(method='GET', body=None, url=ACTIVITY_URL) |
| 36 | + response = azure_activities._get_activities.get_activities(req) |
19 | 37 | activities_json_data = response.get_body().decode("utf-8")
|
20 | 38 |
|
21 | 39 | assert response.status_code == 200
|
22 |
| - assert activities_json_data == json.dumps(activities_json) |
| 40 | + assert activities_json_data == json.dumps(inserted_activities) |
23 | 41 |
|
24 | 42 |
|
25 | 43 | def test__activity_azure_endpoint__returns_an_activity__when_activity_matches_its_id(
|
26 |
| - create_temp_activities, |
| 44 | + create_fake_database, activity_factory, insert_activity |
27 | 45 | ):
|
28 |
| - activities_json, tmp_directory = create_temp_activities |
29 |
| - activities._get_activities.JSON_PATH = tmp_directory |
| 46 | + fake_database = create_fake_database |
| 47 | + existent_activity = activity_factory() |
| 48 | + inserted_activity = insert_activity(existent_activity, fake_database) |
| 49 | + |
| 50 | + azure_activities._get_activities.DATABASE = fake_database |
30 | 51 | req = func.HttpRequest(
|
31 |
| - method="GET", |
| 52 | + method='GET', |
32 | 53 | body=None,
|
33 | 54 | url=ACTIVITY_URL,
|
34 |
| - route_params={"id": activities_json[0]["id"]}, |
| 55 | + route_params={"id": inserted_activity["id"]}, |
35 | 56 | )
|
36 | 57 |
|
37 |
| - response = activities.get_activities(req) |
| 58 | + response = azure_activities._get_activities.get_activities(req) |
38 | 59 | activitiy_json_data = response.get_body().decode("utf-8")
|
39 | 60 |
|
40 | 61 | assert response.status_code == 200
|
41 |
| - assert activitiy_json_data == json.dumps(activities_json[0]) |
| 62 | + assert activitiy_json_data == json.dumps(inserted_activity) |
42 | 63 |
|
43 | 64 |
|
44 | 65 | def test__activity_azure_endpoint__returns_an_activity_with_inactive_status__when_an_activity_matching_its_id_is_found(
|
45 |
| - create_temp_activities, |
| 66 | + create_fake_database, activity_factory, insert_activity |
46 | 67 | ):
|
47 |
| - activities_json, tmp_directory = create_temp_activities |
48 |
| - activities._delete_activity.JSON_PATH = tmp_directory |
| 68 | + fake_database = create_fake_database |
| 69 | + existent_activity = activity_factory() |
| 70 | + inserted_activity = insert_activity(existent_activity, fake_database) |
| 71 | + |
| 72 | + azure_activities._delete_activity.DATABASE = fake_database |
49 | 73 | req = func.HttpRequest(
|
50 |
| - method="DELETE", |
| 74 | + method='DELETE', |
51 | 75 | body=None,
|
52 | 76 | url=ACTIVITY_URL,
|
53 |
| - route_params={"id": activities_json[0]["id"]}, |
| 77 | + route_params={"id": inserted_activity["id"]}, |
54 | 78 | )
|
55 | 79 |
|
56 |
| - response = activities.delete_activity(req) |
| 80 | + response = azure_activities._delete_activity.delete_activity(req) |
57 | 81 | activity_json_data = json.loads(response.get_body().decode("utf-8"))
|
58 | 82 |
|
59 | 83 | assert response.status_code == 200
|
60 |
| - assert activity_json_data["status"] == "inactive" |
| 84 | + assert activity_json_data['status'] == 0 |
| 85 | + assert activity_json_data['deleted'] is True |
61 | 86 |
|
62 | 87 |
|
63 | 88 | def test__update_activity_azure_endpoint__returns_an_activity__when_found_an_activity_to_update(
|
64 |
| - create_temp_activities, |
| 89 | + create_fake_database, activity_factory, insert_activity |
65 | 90 | ):
|
66 |
| - activities_json, tmp_directory = create_temp_activities |
67 |
| - activities._update_activity.JSON_PATH = tmp_directory |
68 |
| - activity_data = {"description": Faker().sentence()} |
| 91 | + fake_database = create_fake_database |
| 92 | + existent_activity = activity_factory() |
| 93 | + inserted_activity = insert_activity(existent_activity, fake_database) |
| 94 | + |
| 95 | + azure_activities._update_activity.DATABASE = fake_database |
| 96 | + activity_body = {"description": Faker().sentence()} |
69 | 97 | req = func.HttpRequest(
|
70 |
| - method="PUT", |
71 |
| - body=json.dumps(activity_data).encode("utf-8"), |
| 98 | + method='PUT', |
| 99 | + body=json.dumps(activity_body).encode("utf-8"), |
72 | 100 | url=ACTIVITY_URL,
|
73 |
| - route_params={"id": activities_json[0]["id"]}, |
| 101 | + route_params={"id": inserted_activity["id"]}, |
74 | 102 | )
|
75 | 103 |
|
76 |
| - response = activities.update_activity(req) |
| 104 | + response = azure_activities._update_activity.update_activity(req) |
77 | 105 | activitiy_json_data = response.get_body().decode("utf-8")
|
78 |
| - new_activity = {**activities_json[0], **activity_data} |
| 106 | + inserted_activity.update(activity_body) |
79 | 107 |
|
80 | 108 | assert response.status_code == 200
|
81 |
| - assert activitiy_json_data == json.dumps(new_activity) |
| 109 | + assert activitiy_json_data == json.dumps(inserted_activity) |
82 | 110 |
|
83 | 111 |
|
84 | 112 | def test__activity_azure_endpoint__creates_an_activity__when_activity_has_all_attributes(
|
85 |
| - create_temp_activities, |
86 |
| -): |
87 |
| - activities_json, tmp_directory = create_temp_activities |
88 |
| - activities._create_activity._JSON_PATH = tmp_directory |
89 |
| - |
| 113 | + create_fake_database, |
| 114 | + ): |
| 115 | + azure_activities._create_activity.DATABASE = create_fake_database |
90 | 116 | activity_body = {
|
91 |
| - "id": None, |
92 |
| - "name": Faker().user_name(), |
93 |
| - "description": Faker().sentence(), |
94 |
| - "deleted": Faker().uuid4(), |
95 |
| - "status": "active", |
96 |
| - "tenant_id": Faker().uuid4(), |
| 117 | + 'id': None, |
| 118 | + 'name': Faker().user_name(), |
| 119 | + 'description': Faker().sentence(), |
| 120 | + 'deleted': False, |
| 121 | + 'status': 1 |
97 | 122 | }
|
98 | 123 | body = json.dumps(activity_body).encode("utf-8")
|
99 | 124 | req = func.HttpRequest(
|
100 |
| - method="POST", |
101 |
| - body=body, |
102 |
| - url=ACTIVITY_URL, |
| 125 | + method='POST', |
| 126 | + body=body, |
| 127 | + url=ACTIVITY_URL, |
103 | 128 | )
|
104 | 129 |
|
105 |
| - response = activities.create_activity(req) |
106 |
| - activitiy_json_data = response.get_body() |
| 130 | + response = azure_activities._create_activity.create_activity(req) |
| 131 | + activitiy_json_data = json.loads(response.get_body()) |
| 132 | + activity_body['id'] = activitiy_json_data['id'] |
| 133 | + |
107 | 134 | assert response.status_code == 201
|
108 |
| - assert activitiy_json_data == body |
| 135 | + assert activitiy_json_data == activity_body |
0 commit comments