@@ -197,3 +197,79 @@ def test_include_time_series_and_update_existing_range_in_cache(self):
197197 self .assertEqual (base_line + timedelta (minutes = 3 ), vals [0 ].timestamp )
198198 self .assertEqual (base_line + timedelta (minutes = 3 , seconds = 3 ), vals [1 ].timestamp )
199199 self .assertEqual (base_line + timedelta (minutes = 5 ), vals [13 ].timestamp )
200+
201+ def test_include_multiple_time_series (self ):
202+ document_id = "users/gracjan"
203+ base_line = datetime (2023 , 8 , 20 , 21 , 30 )
204+
205+ with self .store .open_session () as session :
206+ user = User (name = "Gracjan" )
207+ session .store (user , document_id )
208+ session .save_changes ()
209+
210+ with self .store .open_session () as session :
211+ for i in range (360 ):
212+ session .time_series_for (document_id , "Heartrate" ).append_single (
213+ base_line + timedelta (seconds = i * 10 ), 6 , "watches/fitbit"
214+ )
215+ session .time_series_for (document_id , "BloodPressure" ).append_single (
216+ base_line + timedelta (seconds = i * 10 ), 66 , "watches/fitbit"
217+ )
218+ session .time_series_for (document_id , "Nasdaq" ).append_single (
219+ base_line + timedelta (seconds = i * 10 ), 8097.23 , "nasdaq.com"
220+ )
221+
222+ session .save_changes ()
223+
224+ with self .store .open_session () as session :
225+ session .load (
226+ document_id ,
227+ User ,
228+ lambda i : i .include_time_series (
229+ "Heartrate" , base_line + timedelta (minutes = 3 ), base_line + timedelta (minutes = 5 )
230+ )
231+ .include_time_series (
232+ "BloodPressure" , base_line + timedelta (minutes = 40 ), base_line + timedelta (minutes = 45 )
233+ )
234+ .include_time_series ("Nasdaq" , base_line + timedelta (minutes = 15 ), base_line + timedelta (minutes = 25 )),
235+ )
236+
237+ self .assertEqual (1 , session .advanced .number_of_requests )
238+
239+ self .assertEqual ("Gracjan" , user .name )
240+
241+ # should not go to server
242+
243+ vals = session .time_series_for (document_id , "Heartrate" ).get (
244+ base_line + timedelta (minutes = 3 ), base_line + timedelta (minutes = 5 )
245+ )
246+ self .assertEqual (1 , session .advanced .number_of_requests )
247+
248+ self .assertEqual (13 , len (vals ))
249+
250+ self .assertEqual (base_line + timedelta (minutes = 3 ), vals [0 ].timestamp )
251+ self .assertEqual (base_line + timedelta (minutes = 5 ), vals [12 ].timestamp )
252+
253+ # should not go to server
254+
255+ vals = session .time_series_for (document_id , "BloodPressure" ).get (
256+ base_line + timedelta (minutes = 40 ), base_line + timedelta (minutes = 45 )
257+ )
258+ self .assertEqual (1 , session .advanced .number_of_requests )
259+
260+ self .assertEqual (31 , len (vals ))
261+
262+ self .assertEqual (base_line + timedelta (minutes = 40 ), vals [0 ].timestamp )
263+ self .assertEqual (base_line + timedelta (minutes = 45 ), vals [30 ].timestamp )
264+
265+ # should not go to server
266+
267+ vals = session .time_series_for (document_id , "Nasdaq" ).get (
268+ base_line + timedelta (minutes = 15 ), base_line + timedelta (minutes = 25 )
269+ )
270+ self .assertEqual (1 , session .advanced .number_of_requests )
271+
272+ self .assertEqual (61 , len (vals ))
273+
274+ self .assertEqual (base_line + timedelta (minutes = 15 ), vals [0 ].timestamp )
275+ self .assertEqual (base_line + timedelta (minutes = 25 ), vals [60 ].timestamp )
0 commit comments