1- from time_entries ._domain import Activity , ActivitiesDao
2- from time_entries ._infrastructure import DataAccessLayerSQL ,db , ActivitiesSQLDao
3-
41import pytest
5- import typing
2+ import uuid
3+
4+ import time_entries ._domain as domain
5+ import time_entries ._infrastructure as infrastructure
6+
67
7- @pytest .fixture
8- def _create_fake_database () -> ActivitiesDao :
9- db .db_init ('sqlite:///:memory:' )
10- query = db .activity .insert ()
8+ @pytest .fixture (name = 'create_fake_database' )
9+ def _create_fake_database (with_data : bool ) -> domain .ActivitiesDao :
10+ infrastructure .db .db_init ('sqlite:///:memory:' )
1111 demo_data = [
1212 {
13- 'id' : 'c61a4a49-3364-49a3-a666-0c5f2d15072b' ,
13+ 'id' : uuid . UUID ( 'b4327ba6-9f96-49ee-a9ac-3c1edf525172' ) ,
1414 'name' : 'Activity Demo create' ,
1515 'tenant_id' : 'cc925a5d-9644-4a4f-8d99-0bee49aadd05' ,
1616 'description' : 'test demo create an new activity' ,
1717 'status' : 'active' ,
1818 'deleted' : 'b4327ba6-9f96-49ee-a9ac-3c1edf525172' ,
1919 },
2020 {
21- 'id' : 'c61a4a49-3364-49a3-a666 -0c5f2d15072b' ,
21+ 'id' : uuid . UUID ( 'c61a4a49-3364-49a3-a7f7 -0c5f2d15072b' ) ,
2222 'name' : 'Activity Demo create' ,
2323 'tenant_id' : 'cc925a5d-9644-4a4f-8d99-0bee49aadd05' ,
2424 'description' : 'test demo create an new activity' ,
2525 'status' : 'active' ,
2626 'deleted' : 'b4327ba6-9f96-49ee-a9ac-3c1edf525172' ,
2727 },
2828 ]
29- db .connection .execute (query , demo_data )
30- return ActivitiesSQLDao (db )
29+ if with_data :
30+ query = infrastructure .db .activity .insert ()
31+ infrastructure .db .connection .execute (query , demo_data )
32+ return infrastructure .db
33+
34+
35+ @pytest .mark .parametrize ('with_data' ,[False ])
36+ def test__create_activity__returns_a_activity_dto__when_saves_correctly_with_sql_database (create_fake_database ):
37+ activity = {
38+ 'name' : 'Activity Demo create' ,
39+ 'tenant_id' : 'cc925a5d-9644-4a4f-8d99-0bee49aadd05' ,
40+ 'description' : 'test demo create an new activity' ,
41+ 'status' : 'active' ,
42+ 'deleted' : 'b4327ba6-9f96-49ee-a9ac-3c1edf525172' ,
43+ }
44+ dao = infrastructure .ActivitiesSQLDao (create_fake_database )
45+ results = dao .create_activity (activity )
46+ assert results .id != None
47+
3148
32- def test__get_all__returns_a_list_of_activity_dto_objects__when_one_or_more_activities_are_found_in_sql_database (activitiesSqlDao : ActivitiesSQLDao ):
49+ @pytest .mark .parametrize ('with_data' ,[True ])
50+ def test_update__returns_an_activity_updated__when_an_activity_matching_its_id_is_found_with_sql_database (create_fake_database ):
51+ activity = {
52+ 'name' : 'Activity Demo create 3' ,
53+ 'tenant_id' : 'cc925a5d-9644-4a4f-8d99-0bee49aadd05' ,
54+ 'description' : 'test demo create an new activity' ,
55+ 'status' : 'active' ,
56+ 'deleted' : 'b4327ba6-9f96-49ee-a9ac-3c1edf525172' ,
57+ }
58+ expected_result = domain .Activity (** {
59+ 'id' : 'b4327ba69f9649eea9ac3c1edf525172' ,
60+ 'name' : 'Activity Demo create 3' ,
61+ 'tenant_id' : 'cc925a5d-9644-4a4f-8d99-0bee49aadd05' ,
62+ 'description' : 'test demo create an new activity' ,
63+ 'status' : 'active' ,
64+ 'deleted' : 'b4327ba6-9f96-49ee-a9ac-3c1edf525172' ,
65+ })
66+ dao = infrastructure .ActivitiesSQLDao (create_fake_database )
67+ results = dao .update ('b4327ba69f9649eea9ac3c1edf525172' ,activity )
68+ assert results == expected_result
69+
70+
71+ @pytest .mark .parametrize ('with_data' ,[False ])
72+ def test_update__returns_none__when_no_activity_matching_its_id_is_found_with_sql_database (create_fake_database ):
73+ activity = {
74+ 'name' : 'Activity Demo create 3' ,
75+ 'tenant_id' : 'cc925a5d-9644-4a4f-8d99-0bee49aadd05' ,
76+ 'description' : 'test demo create an new activity' ,
77+ 'status' : 'active' ,
78+ 'deleted' : 'b4327ba6-9f96-49ee-a9ac-3c1edf525172' ,
79+ }
80+ dao = infrastructure .ActivitiesSQLDao (create_fake_database )
81+ results = dao .update ('b4327ba69f9649eea9ac3c1edf525172' ,activity )
82+ assert results == None
83+
84+
85+ @pytest .mark .parametrize ('with_data' ,[True ])
86+ def test__get_all__returns_a_list_of_activity_dto_objects__when_one_or_more_activities_are_found_with_sql_database (create_fake_database ):
3387 expected_result = [
34- Activity (** {
35- 'id' : 'c61a4a49-3364-49a3-a666-0c5f2d15072b ' ,
88+ domain . Activity (** {
89+ 'id' : 'b4327ba69f9649eea9ac3c1edf525172 ' ,
3690 'name' : 'Activity Demo create' ,
3791 'tenant_id' : 'cc925a5d-9644-4a4f-8d99-0bee49aadd05' ,
3892 'description' : 'test demo create an new activity' ,
3993 'status' : 'active' ,
4094 'deleted' : 'b4327ba6-9f96-49ee-a9ac-3c1edf525172' ,
4195 }),
42- Activity (** {
43- 'id' : 'c61a4a49-3364-49a3-a666-0c5f2d15072b ' ,
96+ domain . Activity (** {
97+ 'id' : 'c61a4a49336449a3a7f70c5f2d15072b ' ,
4498 'name' : 'Activity Demo create' ,
4599 'tenant_id' : 'cc925a5d-9644-4a4f-8d99-0bee49aadd05' ,
46100 'description' : 'test demo create an new activity' ,
47101 'status' : 'active' ,
48102 'deleted' : 'b4327ba6-9f96-49ee-a9ac-3c1edf525172' ,
49103 }),
50104 ]
51- results = activitiesSqlDao .get_all ()
52- assert expected_result == results
105+ dao = infrastructure .ActivitiesSQLDao (create_fake_database )
106+ results = dao .get_all ()
107+ assert results == expected_result
108+
109+
110+ @pytest .mark .parametrize ('with_data' ,[True ])
111+ def test_get_by_id__returns_an_activity_dto__when_found_one_activity_that_matches_its_id_with_sql_database (create_fake_database ):
112+ expected_result = domain .Activity (** {
113+ 'id' : 'b4327ba69f9649eea9ac3c1edf525172' ,
114+ 'name' : 'Activity Demo create' ,
115+ 'tenant_id' : 'cc925a5d-9644-4a4f-8d99-0bee49aadd05' ,
116+ 'description' : 'test demo create an new activity' ,
117+ 'status' : 'active' ,
118+ 'deleted' : 'b4327ba6-9f96-49ee-a9ac-3c1edf525172' ,
119+ })
120+ dao = infrastructure .ActivitiesSQLDao (create_fake_database )
121+ results = dao .get_by_id ('b4327ba69f9649eea9ac3c1edf525172' )
122+ assert results == expected_result
123+
124+
125+ @pytest .mark .parametrize ('with_data' ,[False ])
126+ def test__get_by_id__returns_none__when_no_activity_matches_its_id_with_sql_database (create_fake_database ):
127+ dao = infrastructure .ActivitiesSQLDao (create_fake_database )
128+ results = dao .get_by_id ('b4327ba69f9649eea9ac3c1edf525172' )
129+ assert results == None
130+
131+
132+ @pytest .mark .parametrize ('with_data' ,[False ])
133+ def test_get_all__returns_an_empty_list__when_doesnt_found_any_activities_with_sql_database (create_fake_database ):
134+ dao = infrastructure .ActivitiesSQLDao (create_fake_database )
135+ results = dao .get_all ()
136+ assert results == []
137+
138+
139+ @pytest .mark .parametrize ('with_data' ,[True ])
140+ def test_delete__returns_an_activity_with_inactive_status__when_an_activity_matching_its_id_is_found_with_sql_database (create_fake_database ):
141+ expected_result = domain .Activity (** {
142+ 'id' : 'b4327ba69f9649eea9ac3c1edf525172' ,
143+ 'name' : 'Activity Demo create' ,
144+ 'tenant_id' : 'cc925a5d-9644-4a4f-8d99-0bee49aadd05' ,
145+ 'description' : 'test demo create an new activity' ,
146+ 'status' : 'inactive' ,
147+ 'deleted' : 'b4327ba6-9f96-49ee-a9ac-3c1edf525172' ,
148+ })
149+ dao = infrastructure .ActivitiesSQLDao (create_fake_database )
150+ results = dao .delete ('b4327ba69f9649eea9ac3c1edf525172' )
151+ assert results == expected_result
152+
153+
154+ @pytest .mark .parametrize ('with_data' ,[False ])
155+ def test_delete__returns_none__when_no_activity_matching_its_id_is_found_with_sql_database (create_fake_database ):
156+ dao = infrastructure .ActivitiesSQLDao (create_fake_database )
157+ results = dao .delete ('b4327ba69f9649eea9ac3c1edf525172' )
158+ assert results == None
0 commit comments