1- from time_tracker .activities ._application import _activities as activities
1+ import pytest
2+ import json
23from faker import Faker
34
45import azure .functions as func
5- import json
6-
7-
8- ACTIVITY_URL = "/api/activities/"
9-
6+ import sqlalchemy
7+ from sqlalchemy .sql .sqltypes import Integer
8+
9+ import time_tracker .activities ._application ._activities as azure_activities
10+ import time_tracker .activities ._domain as domain
11+ import time_tracker .activities ._infrastructure as infrastructure
12+ from time_tracker ._infrastructure import DB
13+
14+ ACTIVITY_URL = '/api/activities/'
15+
16+ DEMO_DATA = [
17+ {
18+ 'id' : 1 ,
19+ 'name' : 'Activity Demo create' ,
20+ 'description' : 'test demo create an new activity' ,
21+ 'deleted' : None ,
22+ 'status' : None ,
23+ },
24+ {
25+ 'id' : 2 ,
26+ 'name' : 'Activity Demo create' ,
27+ 'description' : 'test demo create an new activity' ,
28+ 'deleted' : None ,
29+ 'status' : None ,
30+ },
31+ ]
32+
33+
34+ @pytest .fixture (name = 'insert_activity' )
35+ def _insert_activity () -> domain .Activity :
36+ def _new_activity (activity : dict , database : DB ):
37+ dao = infrastructure .ActivitiesSQLDao (database )
38+ new_activity = dao .create (activity )
39+ return new_activity
40+ return _new_activity
1041
1142def test__activity_azure_endpoint__returns_all_activities (
12- create_temp_activities ,
43+ create_fake_database , activity_factory , insert_activity
1344):
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 )
45+ fake_database = create_fake_database
46+ existent_activities = [ activity_factory ( DEMO_DATA [ 0 ]), activity_factory ( DEMO_DATA [ 1 ])]
47+ inserted_activities = [ insert_activity ( existent_activities [ 0 ]. __dict__ , fake_database ). __dict__ , insert_activity ( existent_activities [ 1 ]. __dict__ , fake_database ). __dict__ ]
1748
18- response = activities .get_activities (req )
49+ azure_activities ._get_activities .DATABASE = fake_database
50+ req = func .HttpRequest (method = 'GET' , body = None , url = ACTIVITY_URL )
51+ response = azure_activities ._get_activities .get_activities (req )
1952 activities_json_data = response .get_body ().decode ("utf-8" )
20-
53+
2154 assert response .status_code == 200
22- assert activities_json_data == json .dumps (activities_json )
55+ assert activities_json_data == json .dumps (inserted_activities )
2356
2457
2558def test__activity_azure_endpoint__returns_an_activity__when_activity_matches_its_id (
26- create_temp_activities ,
59+ create_fake_database , activity_factory , insert_activity
2760):
28- activities_json , tmp_directory = create_temp_activities
29- activities ._get_activities .JSON_PATH = tmp_directory
61+ fake_database = create_fake_database
62+ existent_activity = activity_factory (DEMO_DATA [0 ])
63+ inserted_activity = insert_activity (existent_activity .__dict__ , fake_database ).__dict__
64+
65+ azure_activities ._get_activities .DATABASE = fake_database
3066 req = func .HttpRequest (
31- method = " GET" ,
67+ method = ' GET' ,
3268 body = None ,
3369 url = ACTIVITY_URL ,
34- route_params = {"id" : activities_json [ 0 ] ["id" ]},
70+ route_params = {"id" : inserted_activity ["id" ]},
3571 )
3672
37- response = activities .get_activities (req )
73+ response = azure_activities . _get_activities .get_activities (req )
3874 activitiy_json_data = response .get_body ().decode ("utf-8" )
3975
4076 assert response .status_code == 200
41- assert activitiy_json_data == json .dumps (activities_json [ 0 ] )
77+ assert activitiy_json_data == json .dumps (inserted_activity )
4278
4379
4480def test__activity_azure_endpoint__returns_an_activity_with_inactive_status__when_an_activity_matching_its_id_is_found (
45- create_temp_activities ,
46- ):
47- activities_json , tmp_directory = create_temp_activities
48- activities ._delete_activity .JSON_PATH = tmp_directory
81+ create_fake_database ,activity_factory , insert_activity
82+ ):
83+ fake_database = create_fake_database
84+ existent_activity = activity_factory (DEMO_DATA [0 ])
85+ inserted_activity = insert_activity (existent_activity .__dict__ , fake_database ).__dict__
86+
87+ azure_activities ._delete_activity .DATABASE = fake_database
4988 req = func .HttpRequest (
50- method = " DELETE" ,
89+ method = ' DELETE' ,
5190 body = None ,
5291 url = ACTIVITY_URL ,
53- route_params = {"id" : activities_json [ 0 ] ["id" ]},
92+ route_params = {"id" : inserted_activity ["id" ]},
5493 )
5594
56- response = activities .delete_activity (req )
95+ response = azure_activities . _delete_activity .delete_activity (req )
5796 activity_json_data = json .loads (response .get_body ().decode ("utf-8" ))
5897
5998 assert response .status_code == 200
60- assert activity_json_data ["status" ] == "inactive"
99+ assert activity_json_data ['status' ] == 0
100+ assert activity_json_data ['deleted' ] == True
61101
62102
63103def test__update_activity_azure_endpoint__returns_an_activity__when_found_an_activity_to_update (
64- create_temp_activities ,
104+ create_fake_database , activity_factory , insert_activity
65105):
66- activities_json , tmp_directory = create_temp_activities
67- activities ._update_activity .JSON_PATH = tmp_directory
68- activity_data = {"description" : Faker ().sentence ()}
106+ fake_database = create_fake_database
107+ existent_activity = activity_factory (DEMO_DATA [0 ])
108+ inserted_activity = insert_activity (existent_activity .__dict__ , fake_database ).__dict__
109+
110+ azure_activities ._update_activity .DATABASE = fake_database
111+ activity_body = {"description" : Faker ().sentence ()}
69112 req = func .HttpRequest (
70- method = " PUT" ,
71- body = json .dumps (activity_data ).encode ("utf-8" ),
113+ method = ' PUT' ,
114+ body = json .dumps (activity_body ).encode ("utf-8" ),
72115 url = ACTIVITY_URL ,
73- route_params = {"id" : activities_json [ 0 ] ["id" ]},
116+ route_params = {"id" : inserted_activity ["id" ]},
74117 )
75118
76- response = activities .update_activity (req )
119+ response = azure_activities . _update_activity .update_activity (req )
77120 activitiy_json_data = response .get_body ().decode ("utf-8" )
78- new_activity = { ** activities_json [ 0 ], ** activity_data }
121+ inserted_activity . update ( activity_body )
79122
80123 assert response .status_code == 200
81- assert activitiy_json_data == json .dumps (new_activity )
124+ assert activitiy_json_data == json .dumps (inserted_activity )
82125
83126
84127def 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-
90- 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 (),
97- }
98- body = json .dumps (activity_body ).encode ("utf-8" )
99- req = func .HttpRequest (
100- method = "POST" ,
101- body = body ,
102- url = ACTIVITY_URL ,
103- )
104-
105- response = activities .create_activity (req )
106- activitiy_json_data = response .get_body ()
107- assert response .status_code == 201
108- assert activitiy_json_data == body
128+ create_fake_database ,
129+ ):
130+ azure_activities ._create_activity .DATABASE = create_fake_database
131+ activity_body = {'id' : None , 'name' : Faker ().user_name (), 'description' : Faker ().sentence (),'deleted' : False ,'status' : 1 }
132+ body = json .dumps (activity_body ).encode ("utf-8" )
133+ req = func .HttpRequest (
134+ method = 'POST' ,
135+ body = body ,
136+ url = ACTIVITY_URL ,
137+ )
138+
139+ response = azure_activities ._create_activity .create_activity (req )
140+ activitiy_json_data = json .loads (response .get_body ())
141+ activity_body ['id' ] = activitiy_json_data ['id' ]
142+
143+ assert response .status_code == 201
144+ assert activitiy_json_data == activity_body
0 commit comments