@@ -296,6 +296,14 @@ def test_compatibility(self):
296
296
out = self ._fetch (is_compatibility = True , source = first .source , signal = first .signal , geo = first .geo_pair , time = "day:*" )
297
297
self .assertEqual (len (out ["epidata" ]), len (rows ))
298
298
299
+ def _diff_covidcast_rows (self , rows : List [CovidcastRow ]) -> List [CovidcastRow ]:
300
+ new_rows = list ()
301
+ for x , y in zip (rows [1 :], rows [:- 1 ]):
302
+ new_row = copy (x )
303
+ new_row .value = x .value - y .value
304
+ new_rows .append (new_row )
305
+ return new_rows
306
+
299
307
def test_trend (self ):
300
308
"""Request a signal the /trend endpoint."""
301
309
@@ -306,29 +314,66 @@ def test_trend(self):
306
314
ref = rows [num_rows // 2 ]
307
315
self ._insert_rows (rows )
308
316
309
- out = self ._fetch ("/trend" , signal = first .signal_pair , geo = first .geo_pair , date = last .time_value , window = "20200401-20201212" , basis = ref .time_value )
317
+ with self .subTest ("no server-side compute" ):
318
+ out = self ._fetch ("/trend" , signal = first .signal_pair , geo = first .geo_pair , date = last .time_value , window = "20200401-20201212" , basis = ref .time_value )
319
+
320
+ self .assertEqual (out ["result" ], 1 )
321
+ self .assertEqual (len (out ["epidata" ]), 1 )
322
+ trend = out ["epidata" ][0 ]
323
+ self .assertEqual (trend ["geo_type" ], last .geo_type )
324
+ self .assertEqual (trend ["geo_value" ], last .geo_value )
325
+ self .assertEqual (trend ["signal_source" ], last .source )
326
+ self .assertEqual (trend ["signal_signal" ], last .signal )
327
+
328
+ self .assertEqual (trend ["date" ], last .time_value )
329
+ self .assertEqual (trend ["value" ], last .value )
330
+
331
+ self .assertEqual (trend ["basis_date" ], ref .time_value )
332
+ self .assertEqual (trend ["basis_value" ], ref .value )
333
+ self .assertEqual (trend ["basis_trend" ], "increasing" )
334
+
335
+ self .assertEqual (trend ["min_date" ], first .time_value )
336
+ self .assertEqual (trend ["min_value" ], first .value )
337
+ self .assertEqual (trend ["min_trend" ], "increasing" )
338
+ self .assertEqual (trend ["max_date" ], last .time_value )
339
+ self .assertEqual (trend ["max_value" ], last .value )
340
+ self .assertEqual (trend ["max_trend" ], "steady" )
341
+
342
+ num_rows = 30
343
+ time_value_pairs = [(20200331 , 0 )] + [(20200401 + i , v ) for i , v in enumerate (accumulate (range (num_rows )))]
344
+ rows = [CovidcastRow (source = "jhu-csse" , signal = "confirmed_cumulative_num" , time_value = t , value = v ) for t , v in time_value_pairs ]
345
+ self ._insert_rows (rows )
346
+ diffed_rows = self ._diff_covidcast_rows (rows )
347
+ for row in diffed_rows :
348
+ row .signal = "confirmed_incidence_num"
349
+ first = diffed_rows [0 ]
350
+ last = diffed_rows [- 1 ]
351
+ ref = diffed_rows [num_rows // 2 ]
352
+ with self .subTest ("use server-side compute" ):
353
+ out = self ._fetch ("/trend" , signal = "jhu-csse:confirmed_incidence_num" , geo = first .geo_pair , date = last .time_value , window = "20200401-20201212" , basis = ref .time_value )
354
+
355
+ self .assertEqual (out ["result" ], 1 )
356
+ self .assertEqual (len (out ["epidata" ]), 1 )
357
+ trend = out ["epidata" ][0 ]
358
+ self .assertEqual (trend ["geo_type" ], last .geo_type )
359
+ self .assertEqual (trend ["geo_value" ], last .geo_value )
360
+ self .assertEqual (trend ["signal_source" ], last .source )
361
+ self .assertEqual (trend ["signal_signal" ], last .signal )
362
+
363
+ self .assertEqual (trend ["date" ], last .time_value )
364
+ self .assertEqual (trend ["value" ], last .value )
365
+
366
+ self .assertEqual (trend ["basis_date" ], ref .time_value )
367
+ self .assertEqual (trend ["basis_value" ], ref .value )
368
+ self .assertEqual (trend ["basis_trend" ], "increasing" )
369
+
370
+ self .assertEqual (trend ["min_date" ], first .time_value )
371
+ self .assertEqual (trend ["min_value" ], first .value )
372
+ self .assertEqual (trend ["min_trend" ], "increasing" )
373
+ self .assertEqual (trend ["max_date" ], last .time_value )
374
+ self .assertEqual (trend ["max_value" ], last .value )
375
+ self .assertEqual (trend ["max_trend" ], "steady" )
310
376
311
- self .assertEqual (out ["result" ], 1 )
312
- self .assertEqual (len (out ["epidata" ]), 1 )
313
- trend = out ["epidata" ][0 ]
314
- self .assertEqual (trend ["geo_type" ], last .geo_type )
315
- self .assertEqual (trend ["geo_value" ], last .geo_value )
316
- self .assertEqual (trend ["signal_source" ], last .source )
317
- self .assertEqual (trend ["signal_signal" ], last .signal )
318
-
319
- self .assertEqual (trend ["date" ], last .time_value )
320
- self .assertEqual (trend ["value" ], last .value )
321
-
322
- self .assertEqual (trend ["basis_date" ], ref .time_value )
323
- self .assertEqual (trend ["basis_value" ], ref .value )
324
- self .assertEqual (trend ["basis_trend" ], "increasing" )
325
-
326
- self .assertEqual (trend ["min_date" ], first .time_value )
327
- self .assertEqual (trend ["min_value" ], first .value )
328
- self .assertEqual (trend ["min_trend" ], "increasing" )
329
- self .assertEqual (trend ["max_date" ], last .time_value )
330
- self .assertEqual (trend ["max_value" ], last .value )
331
- self .assertEqual (trend ["max_trend" ], "steady" )
332
377
333
378
def test_trendseries (self ):
334
379
"""Request a signal the /trendseries endpoint."""
0 commit comments