33# standard library
44from datetime import date
55import os
6- import unittest
7- import argparse
86
97# third party
10- import mysql .connector
118import pandas as pd
129import numpy as np
1310
1411# first party
1512from delphi_utils import Nans
16- from delphi .epidata .client .delphi_epidata import Epidata
1713from delphi .epidata .acquisition .covidcast .csv_to_database import main , get_argument_parser
18- import delphi .operations . secrets as secrets
14+ from delphi .epidata . common . covidcast_test_base import CovidcastTestBase
1915
2016# py3tester coverage target (equivalent to `import *`)
2117__test_target__ = 'delphi.epidata.acquisition.covidcast.csv_to_database'
2218
2319
24- class CsvUploadingTests (unittest . TestCase ):
20+ class CsvUploadingTests (CovidcastTestBase ):
2521 """Tests covidcast CSV uploading."""
2622
27- def setUp (self ):
28- """Perform per-test setup."""
29-
30- # connect to the `epidata` database and clear the `covidcast` table
31- cnx = mysql .connector .connect (
32- user = 'user' ,
33- password = 'pass' ,
34- host = 'delphi_database_epidata' ,
35- database = 'covid' )
36- cur = cnx .cursor ()
37-
38- # clear all tables
39- cur .execute ("truncate table epimetric_load" )
40- cur .execute ("truncate table epimetric_full" )
41- cur .execute ("truncate table epimetric_latest" )
42- cur .execute ("truncate table geo_dim" )
43- cur .execute ("truncate table signal_dim" )
44- # reset the `covidcast_meta_cache` table (it should always have one row)
45- cur .execute ('update covidcast_meta_cache set timestamp = 0, epidata = "[]"' )
46-
47- cnx .commit ()
48- cur .close ()
49-
50- # make connection and cursor available to test cases
51- self .cnx = cnx
52- self .cur = cnx .cursor ()
53-
54- # use the local instance of the epidata database
55- secrets .db .host = 'delphi_database_epidata'
56- secrets .db .epi = ('user' , 'pass' )
57-
58- epidata_cnx = mysql .connector .connect (
59- user = 'user' ,
60- password = 'pass' ,
61- host = 'delphi_database_epidata' ,
62- database = 'epidata' )
63- epidata_cur = epidata_cnx .cursor ()
64-
65- epidata_cur .execute ("DELETE FROM `api_user`" )
66- epidata_cur .execute ('INSERT INTO `api_user`(`api_key`, `email`) VALUES("key", "email")' )
67- epidata_cnx .commit ()
68- epidata_cur .close ()
69- epidata_cnx .close ()
70-
71- # use the local instance of the Epidata API
72- Epidata .BASE_URL = 'http://delphi_web_epidata/epidata'
73- Epidata .auth = ('epidata' , 'key' )
74-
75- def tearDown (self ):
76- """Perform per-test teardown."""
77- self .cur .close ()
78- self .cnx .close ()
79-
8023 @staticmethod
8124 def apply_lag (expected_epidata ):
8225 expected_issue_day = date .today ()
@@ -91,11 +34,11 @@ def apply_lag(expected_epidata):
9134 return expected_epidata
9235
9336 def verify_timestamps_and_defaults (self ):
94- self .cur .execute ('''
37+ self ._db . _cursor .execute ('''
9538select value_updated_timestamp from epimetric_full
9639UNION ALL
9740select value_updated_timestamp from epimetric_latest''' )
98- for (value_updated_timestamp ,) in self .cur :
41+ for (value_updated_timestamp ,) in self ._db . _cursor :
9942 self .assertGreater (value_updated_timestamp , 0 )
10043
10144 def test_uploading (self ):
@@ -130,7 +73,7 @@ def test_uploading(self):
13073
13174 # upload CSVs
13275 main (args )
133- response = Epidata .covidcast ('src-name' , signal_name , 'day' , 'state' , 20200419 , '*' )
76+ response = self . epidata_client .covidcast ('src-name' , signal_name , 'day' , 'state' , 20200419 , '*' )
13477
13578 expected_values = pd .concat ([values , pd .DataFrame ({ "geo_type" : "state" , "source" : "src-name" , "time_type" : "day" , "time_value" : [20200419 ] * 3 , "signal" : [signal_name ] * 3 , "direction" : [None ] * 3 })], axis = 1 ).rename (columns = uploader_column_rename ).to_dict (orient = "records" )
13679 expected_response = {'result' : 1 , 'epidata' : self .apply_lag (expected_values ), 'message' : 'success' }
@@ -158,7 +101,7 @@ def test_uploading(self):
158101
159102 # upload CSVs
160103 main (args )
161- response = Epidata .covidcast ('src-name' , signal_name , 'day' , 'state' , 20200419 , '*' )
104+ response = self . epidata_client .covidcast ('src-name' , signal_name , 'day' , 'state' , 20200419 , '*' )
162105
163106 expected_values = pd .concat ([values , pd .DataFrame ({
164107 "geo_type" : "state" ,
@@ -195,7 +138,7 @@ def test_uploading(self):
195138
196139 # upload CSVs
197140 main (args )
198- response = Epidata .covidcast ('src-name' , signal_name , 'day' , 'state' , 20200419 , '*' )
141+ response = self . epidata_client .covidcast ('src-name' , signal_name , 'day' , 'state' , 20200419 , '*' )
199142
200143 expected_response = {'epidata' : [], 'result' : - 2 , 'message' : 'no results' }
201144
@@ -220,7 +163,7 @@ def test_uploading(self):
220163
221164 # upload CSVs
222165 main (args )
223- response = Epidata .covidcast ('src-name' , signal_name , 'day' , 'state' , 20200419 , '*' )
166+ response = self . epidata_client .covidcast ('src-name' , signal_name , 'day' , 'state' , 20200419 , '*' )
224167
225168 expected_values_df = pd .concat ([values , pd .DataFrame ({
226169 "geo_type" : "state" ,
@@ -256,7 +199,7 @@ def test_uploading(self):
256199
257200 # upload CSVs
258201 main (args )
259- response = Epidata .covidcast ('src-name' , signal_name , 'day' , 'state' , 20200419 , '*' )
202+ response = self . epidata_client .covidcast ('src-name' , signal_name , 'day' , 'state' , 20200419 , '*' )
260203
261204 expected_values = pd .concat ([values , pd .DataFrame ({
262205 "geo_type" : "state" ,
@@ -290,7 +233,7 @@ def test_uploading(self):
290233
291234 # upload CSVs
292235 main (args )
293- response = Epidata .covidcast ('src-name' , signal_name , 'day' , 'state' , 20200419 , '*' )
236+ response = self . epidata_client .covidcast ('src-name' , signal_name , 'day' , 'state' , 20200419 , '*' )
294237
295238 expected_response = {'epidata' : [], 'result' : - 2 , 'message' : 'no results' }
296239
0 commit comments