33import pytest
44from faker import Faker
55
6- from commons . data_access_layer . cosmos_db import current_datetime , datetime_str
6+ from utils . time import datetime_str , current_datetime
77from commons .data_access_layer .database import EventContext
8- from time_tracker_api .time_entries .time_entries_model import TimeEntryCosmosDBRepository , TimeEntryCosmosDBModel , \
9- container_definition
8+ from time_tracker_api .time_entries .time_entries_model import (
9+ TimeEntryCosmosDBRepository ,
10+ TimeEntryCosmosDBModel ,
11+ container_definition ,
12+ )
1013
1114fake = Faker ()
1215
1518two_days_ago = current_datetime () - timedelta (days = 2 )
1619
1720
18- def create_time_entry (start_date : datetime , end_date : datetime ,
19- owner_id : str , tenant_id : str , event_context : EventContext ,
20- time_entry_repository : TimeEntryCosmosDBRepository ) -> TimeEntryCosmosDBModel :
21+ def create_time_entry (
22+ start_date : datetime ,
23+ end_date : datetime ,
24+ owner_id : str ,
25+ tenant_id : str ,
26+ event_context : EventContext ,
27+ time_entry_repository : TimeEntryCosmosDBRepository ,
28+ ) -> TimeEntryCosmosDBModel :
2129 data = {
2230 "project_id" : fake .uuid4 (),
2331 "activity_id" : fake .uuid4 (),
2432 "description" : fake .paragraph (nb_sentences = 2 ),
2533 "start_date" : datetime_str (start_date ),
2634 "end_date" : datetime_str (end_date ),
2735 "owner_id" : owner_id ,
28- "tenant_id" : tenant_id
36+ "tenant_id" : tenant_id ,
2937 }
3038
31- created_item = time_entry_repository .create (data , event_context ,
32- mapper = TimeEntryCosmosDBModel )
39+ created_item = time_entry_repository .create (
40+ data , event_context , mapper = TimeEntryCosmosDBModel
41+ )
3342 return created_item
3443
3544
3645@pytest .mark .parametrize (
3746 'start_date,end_date' , [(two_days_ago , yesterday ), (now , None )]
3847)
39- def test_find_interception_with_date_range_should_find (start_date : datetime ,
40- end_date : datetime ,
41- owner_id : str ,
42- tenant_id : str ,
43- time_entry_repository : TimeEntryCosmosDBRepository ):
44- event_ctx = EventContext (container_definition ["id" ], "create" ,
45- tenant_id = tenant_id , user_id = owner_id )
46-
47- existing_item = create_time_entry (start_date , end_date , owner_id , tenant_id ,
48- event_ctx , time_entry_repository )
48+ def test_find_interception_with_date_range_should_find (
49+ start_date : datetime ,
50+ end_date : datetime ,
51+ owner_id : str ,
52+ tenant_id : str ,
53+ time_entry_repository : TimeEntryCosmosDBRepository ,
54+ ):
55+ event_ctx = EventContext (
56+ container_definition ["id" ],
57+ "create" ,
58+ tenant_id = tenant_id ,
59+ user_id = owner_id ,
60+ )
61+
62+ existing_item = create_time_entry (
63+ start_date ,
64+ end_date ,
65+ owner_id ,
66+ tenant_id ,
67+ event_ctx ,
68+ time_entry_repository ,
69+ )
4970
5071 try :
51- result = time_entry_repository .find_interception_with_date_range (datetime_str ( yesterday ),
52- datetime_str (now ),
53- owner_id , tenant_id )
72+ result = time_entry_repository .find_interception_with_date_range (
73+ datetime_str ( yesterday ), datetime_str (now ), owner_id , tenant_id
74+ )
5475
5576 assert result is not None
5677 assert len (result ) > 0
@@ -59,42 +80,63 @@ def test_find_interception_with_date_range_should_find(start_date: datetime,
5980 time_entry_repository .delete_permanently (existing_item .id , event_ctx )
6081
6182
62- def test_find_interception_should_ignore_id_of_existing_item (owner_id : str , tenant_id : str ,
63- time_entry_repository : TimeEntryCosmosDBRepository ):
64- event_ctx = EventContext (container_definition ["id" ], "create" , tenant_id = tenant_id , user_id = owner_id )
83+ def test_find_interception_should_ignore_id_of_existing_item (
84+ owner_id : str ,
85+ tenant_id : str ,
86+ time_entry_repository : TimeEntryCosmosDBRepository ,
87+ ):
88+ event_ctx = EventContext (
89+ container_definition ["id" ],
90+ "create" ,
91+ tenant_id = tenant_id ,
92+ user_id = owner_id ,
93+ )
6594 start_date = datetime_str (yesterday )
6695 end_date = datetime_str (now )
67- existing_item = create_time_entry (yesterday , now , owner_id , tenant_id , event_ctx , time_entry_repository )
96+ existing_item = create_time_entry (
97+ yesterday , now , owner_id , tenant_id , event_ctx , time_entry_repository
98+ )
6899 try :
69- colliding_result = time_entry_repository .find_interception_with_date_range (start_date , end_date ,
70- owner_id , tenant_id )
71-
72- non_colliding_result = time_entry_repository .find_interception_with_date_range (start_date , end_date ,
73- owner_id , tenant_id ,
74- ignore_id = existing_item .id )
100+ colliding_result = time_entry_repository .find_interception_with_date_range (
101+ start_date , end_date , owner_id , tenant_id
102+ )
103+
104+ non_colliding_result = time_entry_repository .find_interception_with_date_range (
105+ start_date ,
106+ end_date ,
107+ owner_id ,
108+ tenant_id ,
109+ ignore_id = existing_item .id ,
110+ )
75111
76112 colliding_result is not None
77113 assert any ([existing_item .id == item .id for item in colliding_result ])
78114
79115 non_colliding_result is not None
80- assert not any ([existing_item .id == item .id for item in non_colliding_result ])
116+ assert not any (
117+ [existing_item .id == item .id for item in non_colliding_result ]
118+ )
81119 finally :
82120 time_entry_repository .delete_permanently (existing_item .id , event_ctx )
83121
84122
85- def test_find_running_should_return_running_time_entry (running_time_entry ,
86- time_entry_repository : TimeEntryCosmosDBRepository ):
87- found_time_entry = time_entry_repository .find_running (running_time_entry .tenant_id ,
88- running_time_entry .owner_id )
123+ def test_find_running_should_return_running_time_entry (
124+ running_time_entry , time_entry_repository : TimeEntryCosmosDBRepository
125+ ):
126+ found_time_entry = time_entry_repository .find_running (
127+ running_time_entry .tenant_id , running_time_entry .owner_id
128+ )
89129
90130 assert found_time_entry is not None
91131 assert found_time_entry .id == running_time_entry .id
92132 assert found_time_entry .owner_id == running_time_entry .owner_id
93133
94134
95- def test_find_running_should_not_find_any_item (tenant_id : str ,
96- owner_id : str ,
97- time_entry_repository : TimeEntryCosmosDBRepository ):
135+ def test_find_running_should_not_find_any_item (
136+ tenant_id : str ,
137+ owner_id : str ,
138+ time_entry_repository : TimeEntryCosmosDBRepository ,
139+ ):
98140 try :
99141 time_entry_repository .find_running (tenant_id , owner_id )
100142 except Exception as e :
0 commit comments