|
1 | | -from time_entries._application._activities import ( |
2 | | - _get_activities, |
3 | | - _delete_activity, |
4 | | -) |
5 | | -import azure.functions as func |
6 | | -import json |
| 1 | +import pytest |
7 | 2 | import typing |
| 3 | +import json |
| 4 | +import uuid |
8 | 5 |
|
9 | 6 |
|
| 7 | +import azure.functions as func |
| 8 | + |
| 9 | +import time_entries._application._activities as azure_activities |
| 10 | +import time_entries._domain as domain |
| 11 | +import time_entries._infrastructure as infrastructure |
| 12 | + |
| 13 | +@pytest.fixture(name='create_fake_database') |
| 14 | +def _create_fake_database() -> domain.ActivitiesDao: |
| 15 | + db_fake = infrastructure.DB('sqlite:///:memory:') |
| 16 | + demo_data = [ |
| 17 | + { |
| 18 | + 'id': uuid.UUID('b4327ba6-9f96-49ee-a9ac-3c1edf525172'), |
| 19 | + 'name': 'Activity Demo create', |
| 20 | + 'description': 'test demo create an new activity', |
| 21 | + 'deleted': 'b4327ba6-9f96-49ee-a9ac-3c1edf525172', |
| 22 | + 'status': 'active', |
| 23 | + 'tenant_id': 'cc925a5d-9644-4a4f-8d99-0bee49aadd05', |
| 24 | + }, |
| 25 | + { |
| 26 | + 'id': uuid.UUID('c61a4a49-3364-49a3-a7f7-0c5f2d15072b'), |
| 27 | + 'name': 'Activity Demo create', |
| 28 | + 'description': 'test demo create an new activity', |
| 29 | + 'deleted': 'b4327ba6-9f96-49ee-a9ac-3c1edf525172', |
| 30 | + 'status': 'active', |
| 31 | + 'tenant_id': 'cc925a5d-9644-4a4f-8d99-0bee49aadd05', |
| 32 | + }, |
| 33 | + ] |
| 34 | + |
| 35 | + query = db_fake.activity.insert() |
| 36 | + db_fake.connection.execute(query, demo_data) |
| 37 | + return db_fake, demo_data |
| 38 | + |
10 | 39 | def test__activity_azure_endpoint__returns_all_activities( |
11 | | - create_temp_activities, |
| 40 | + create_fake_database, |
12 | 41 | ): |
13 | | - activities_json, tmp_directory = create_temp_activities |
14 | | - _get_activities.JSON_PATH = tmp_directory |
| 42 | + database, activity_data = create_fake_database |
| 43 | + azure_activities._get_activities.DATABASE = database |
15 | 44 | req = func.HttpRequest(method='GET', body=None, url='/api/activities') |
16 | 45 |
|
17 | | - response = _get_activities.get_activities(req) |
| 46 | + response = azure_activities._get_activities.get_activities(req) |
18 | 47 | activities_json_data = response.get_body().decode("utf-8") |
19 | | - |
| 48 | + |
| 49 | + for activity in activity_data: |
| 50 | + activity["id"] = activity["id"].hex |
| 51 | + |
20 | 52 | assert response.status_code == 200 |
21 | | - assert activities_json_data == json.dumps(activities_json) |
| 53 | + assert activities_json_data == json.dumps(activity_data) |
22 | 54 |
|
23 | 55 |
|
24 | 56 | def test__activity_azure_endpoint__returns_an_activity__when_activity_matches_its_id( |
25 | | - create_temp_activities, |
| 57 | + create_fake_database, |
26 | 58 | ): |
27 | | - activities_json, tmp_directory = create_temp_activities |
28 | | - _get_activities.JSON_PATH = tmp_directory |
| 59 | + database, activity_data = create_fake_database |
| 60 | + azure_activities._get_activities.DATABASE = database |
29 | 61 | req = func.HttpRequest( |
30 | 62 | method='GET', |
31 | 63 | body=None, |
32 | 64 | url='/api/activities/', |
33 | | - route_params={"id": activities_json[0]['id']}, |
| 65 | + route_params={"id": str(activity_data[0]['id'])}, |
34 | 66 | ) |
35 | 67 |
|
36 | | - response = _get_activities.get_activities(req) |
| 68 | + response = azure_activities._get_activities.get_activities(req) |
37 | 69 | activitiy_json_data = response.get_body().decode("utf-8") |
38 | 70 |
|
| 71 | + activity_data[0]["id"] = activity_data[0]["id"].hex |
| 72 | + |
39 | 73 | assert response.status_code == 200 |
40 | | - assert activitiy_json_data == json.dumps(activities_json[0]) |
| 74 | + assert activitiy_json_data == json.dumps(activity_data[0]) |
41 | 75 |
|
42 | 76 |
|
43 | 77 | def test__activity_azure_endpoint__returns_an_activity_with_inactive_status__when_an_activity_matching_its_id_is_found( |
44 | | - create_temp_activities, |
| 78 | + create_fake_database, |
45 | 79 | ): |
46 | | - activities_json, tmp_directory = create_temp_activities |
47 | | - _delete_activity.JSON_PATH = tmp_directory |
| 80 | + database, activity_data = create_fake_database |
| 81 | + azure_activities._delete_activity.DATABASE = database |
48 | 82 | req = func.HttpRequest( |
49 | 83 | method='DELETE', |
50 | 84 | body=None, |
51 | 85 | url='/api/activities/', |
52 | | - route_params={"id": activities_json[0]['id']}, |
| 86 | + route_params={"id": str(activity_data[0]['id'])}, |
53 | 87 | ) |
54 | 88 |
|
55 | | - response = _delete_activity.delete_activity(req) |
| 89 | + response = azure_activities._delete_activity.delete_activity(req) |
56 | 90 | activity_json_data = json.loads(response.get_body().decode("utf-8")) |
57 | 91 |
|
58 | 92 | assert response.status_code == 200 |
|
0 commit comments