5
5
from datetime import date , datetime , timedelta
6
6
from zoneinfo import ZoneInfo
7
7
8
+ import pytz
8
9
from aiohttp import ClientSession
9
10
10
11
from ims_envista import IMSEnvista
@@ -27,6 +28,7 @@ async def asyncSetUp(self) -> None:
27
28
28
29
# Initialize the session in an async context
29
30
self .session = ClientSession ()
31
+ self .tz = pytz .timezone ("Asia/Jerusalem" )
30
32
self .ims = IMSEnvista (self .token , session = self .session )
31
33
32
34
async def asyncTearDown (self ) -> None :
@@ -117,35 +119,38 @@ async def test_get_earliest_station_data_with_channel(self) -> None:
117
119
async def test_get_station_data_from_date (self ) -> None :
118
120
"""Test get_station_data_from_date endpoint."""
119
121
station_data = await self .ims .get_station_data_from_date (
120
- self .station_id , datetime .now (tz = ZoneInfo ( "Asia/Jerusalem" ))
122
+ self .station_id , self . tz . localize ( datetime .now ())
121
123
)
122
124
123
125
assert station_data is not None
124
126
assert station_data .station_id == self .station_id
125
127
assert station_data .data is not None
126
128
assert len (station_data .data ) > 0
127
129
for station_reading in station_data .data :
128
- assert station_reading .datetime .date () == datetime .now (tz = ZoneInfo ( "Asia/Jerusalem" )).date ()
130
+ assert station_reading .datetime .date () == self . tz . localize ( datetime .now ()).date ()
129
131
130
132
131
133
async def test_get_station_data_from_date_with_channel (self ) -> None :
132
134
"""Test get_station_data_from_date endpoint with channel."""
133
135
station_data = await self .ims .get_station_data_from_date (
134
- self .station_id , datetime .now (tz = ZoneInfo ( "Asia/Jerusalem" )), self .channel_id
136
+ self .station_id , self . tz . localize ( datetime .now ()), self .channel_id
135
137
)
136
138
137
139
assert station_data is not None
138
140
assert station_data .station_id == self .station_id
139
141
assert station_data .data is not None
140
142
assert len (station_data .data ) > 0
141
143
for station_reading in station_data .data :
142
- assert station_reading .datetime .date () == datetime .now (tz = ZoneInfo ( "Asia/Jerusalem" )).date ()
144
+ assert station_reading .datetime .date () == self . tz . localize ( datetime .now ()).date ()
143
145
144
146
145
147
async def test_get_station_data_by_date_range (self ) -> None :
146
148
"""Test get_station_data_by_date_range endpoint."""
147
- today = datetime .now (tz = ZoneInfo ("Asia/Jerusalem" ))
149
+ today = self .tz .localize (datetime .now ())
150
+ today = today .replace (hour = 0 , minute = 0 , second = 0 , microsecond = 0 )
148
151
yesterday = today - timedelta (days = 1 )
152
+ # `hour=1` for DST fix cases
153
+ today = today .replace (hour = 2 , minute = 0 , second = 0 , microsecond = 0 )
149
154
station_data = await self .ims .get_station_data_by_date_range (
150
155
self .station_id , from_date = yesterday , to_date = today
151
156
)
@@ -156,14 +161,17 @@ async def test_get_station_data_by_date_range(self) -> None:
156
161
assert len (station_data .data ) > 0
157
162
for station_reading in station_data .data :
158
163
assert station_reading .datetime >= to_date_time (yesterday )
159
- assert station_reading .datetime < to_date_time ( today )
164
+ assert station_reading .datetime < today
160
165
assert station_reading .td > 0
161
166
162
167
163
168
async def test_get_station_data_by_date_range_with_channel (self ) -> None :
164
169
"""Test get_station_data_by_date_range endpoint with channel."""
165
- today = datetime .now (tz = ZoneInfo ("Asia/Jerusalem" ))
170
+ today = self .tz .localize (datetime .now ())
171
+ today = today .replace (hour = 0 , minute = 0 , second = 0 , microsecond = 0 )
166
172
yesterday = today - timedelta (days = 1 )
173
+ # `hour=1` for DST fix cases
174
+ today = today .replace (hour = 2 , minute = 0 , second = 0 , microsecond = 0 )
167
175
station_data = await self .ims .get_station_data_by_date_range (
168
176
self .station_id ,
169
177
from_date = yesterday ,
@@ -177,14 +185,14 @@ async def test_get_station_data_by_date_range_with_channel(self) -> None:
177
185
assert len (station_data .data ) > 0
178
186
for station_reading in station_data .data :
179
187
assert station_reading .datetime >= to_date_time (yesterday )
180
- assert station_reading .datetime < to_date_time ( today )
188
+ assert station_reading .datetime < today
181
189
assert station_reading .td > 0
182
190
183
191
184
192
async def test_get_monthly_station_data (self ) -> None :
185
193
"""Test get_monthly_station_data endpoint."""
186
- year = datetime .now (tz = ZoneInfo ( "Asia/Jerusalem" )).strftime ("%Y" )
187
- month = datetime .now (tz = ZoneInfo ( "Asia/Jerusalem" )).strftime ("%m" )
194
+ year = self . tz . localize ( datetime .now ()).strftime ("%Y" )
195
+ month = self . tz . localize ( datetime .now ()).strftime ("%m" )
188
196
station_data = await self .ims .get_monthly_station_data (
189
197
self .station_id , month = month , year = year
190
198
)
@@ -201,8 +209,8 @@ async def test_get_monthly_station_data(self) -> None:
201
209
202
210
async def test_get_monthly_station_data_with_channel (self ) -> None :
203
211
"""Test get_monthly_station_data endpoint with channel."""
204
- year = datetime .now (tz = ZoneInfo ( "Asia/Jerusalem" )).strftime ("%Y" )
205
- month = datetime .now (tz = ZoneInfo ( "Asia/Jerusalem" )).strftime ("%m" )
212
+ year = self . tz . localize ( datetime .now ()).strftime ("%Y" )
213
+ month = self . tz . localize ( datetime .now ()).strftime ("%m" )
206
214
station_data = await self .ims .get_monthly_station_data (
207
215
self .station_id , channel_id = self .channel_id , month = month , year = year
208
216
)
0 commit comments