1313from .test_jhu import DATETIME_STRING , mocked_requests_get , mocked_strptime_isoformat
1414
1515
16+ def format_json (s ):
17+ return json .dumps (json .loads (s ), indent = 4 , sort_keys = True )
18+
19+ def do_test_v1 (obj , state , mock_request_get , mock_datetime ):
20+ "Formatted json-strings make debugging easier"
21+ mock_datetime .utcnow .return_value .isoformat .return_value = obj .date
22+ mock_datetime .strptime .side_effect = mocked_strptime_isoformat
23+
24+ json_ret = obj .asgi_client .get ("/{}" .format (state )).json ()
25+ ret = str (json_ret ).replace ("\' " , "\" " )
26+
27+ filepath = "tests/expected_output/v1_{state}.json" .format (state = state )
28+ with open (filepath , "r" ) as file :
29+ exp = file .read ()
30+
31+ assert format_json (ret ) == format_json (exp )
32+
33+
1634@mock .patch ("app.services.location.jhu.datetime" )
1735@mock .patch ("app.services.location.jhu.requests.get" , side_effect = mocked_requests_get )
1836class FlaskRoutesTest (unittest .TestCase ):
@@ -26,12 +44,6 @@ def setUp(self):
2644 self .asgi_client = TestClient (APP )
2745 self .date = DATETIME_STRING
2846
29- def read_file_v1 (self , state ):
30- filepath = "tests/expected_output/v1_{state}.json" .format (state = state )
31- with open (filepath , "r" ) as file :
32- expected_json_output = file .read ()
33- return expected_json_output
34-
3547 def test_root_api (self , mock_request_get , mock_datetime ):
3648 """Validate that / returns a 200 and is not a redirect."""
3749 response = self .asgi_client .get ("/" )
@@ -40,49 +52,23 @@ def test_root_api(self, mock_request_get, mock_datetime):
4052 assert not response .is_redirect
4153
4254 def test_v1_confirmed (self , mock_request_get , mock_datetime ):
43- mock_datetime .utcnow .return_value .isoformat .return_value = self .date
44- mock_datetime .strptime .side_effect = mocked_strptime_isoformat
45- state = "confirmed"
46- expected_json_output = self .read_file_v1 (state = state )
47- return_data = self .asgi_client .get ("/{}" .format (state )).json ()
48-
49- assert return_data == json .loads (expected_json_output )
55+ do_test_v1 (self , "confirmed" , mock_request_get , mock_datetime )
5056
5157 def test_v1_deaths (self , mock_request_get , mock_datetime ):
52- mock_datetime .utcnow .return_value .isoformat .return_value = self .date
53- mock_datetime .strptime .side_effect = mocked_strptime_isoformat
54- state = "deaths"
55- expected_json_output = self .read_file_v1 (state = state )
56- return_data = self .asgi_client .get ("/{}" .format (state )).json ()
57-
58- assert return_data == json .loads (expected_json_output )
58+ do_test_v1 (self , "deaths" , mock_request_get , mock_datetime )
5959
6060 def test_v1_recovered (self , mock_request_get , mock_datetime ):
61- mock_datetime .utcnow .return_value .isoformat .return_value = self .date
62- mock_datetime .strptime .side_effect = mocked_strptime_isoformat
63- state = "recovered"
64- expected_json_output = self .read_file_v1 (state = state )
65- return_data = self .asgi_client .get ("/{}" .format (state )).json ()
66-
67- assert return_data == json .loads (expected_json_output )
61+ do_test_v1 (self , "recovered" , mock_request_get , mock_datetime )
6862
6963 def test_v1_all (self , mock_request_get , mock_datetime ):
70- mock_datetime .utcnow .return_value .isoformat .return_value = self .date
71- mock_datetime .strptime .side_effect = mocked_strptime_isoformat
72- state = "all"
73- expected_json_output = self .read_file_v1 (state = state )
74- return_data = self .asgi_client .get ("/{}" .format (state )).json ()
75-
76- assert return_data == json .loads (expected_json_output )
64+ do_test_v1 (self , "all" , mock_request_get , mock_datetime )
7765
7866 def test_v2_latest (self , mock_request_get , mock_datetime ):
7967 mock_datetime .utcnow .return_value .isoformat .return_value = DATETIME_STRING
8068 mock_datetime .strptime .side_effect = mocked_strptime_isoformat
8169 state = "latest"
8270 return_data = self .asgi_client .get (f"/v2/{ state } " ).json ()
83-
8471 check_dict = {"latest" : {"confirmed" : 1940 , "deaths" : 1940 , "recovered" : 0 }}
85-
8672 assert return_data == check_dict
8773
8874 def test_v2_locations (self , mock_request_get , mock_datetime ):
@@ -93,9 +79,7 @@ def test_v2_locations(self, mock_request_get, mock_datetime):
9379
9480 filepath = "tests/expected_output/v2_{state}.json" .format (state = state )
9581 with open (filepath , "r" ) as file :
96- expected_json_output = file .read ()
97-
98- # assert return_data == json.loads(expected_json_output)
82+ data_read = file .read ()
9983
10084 def test_v2_locations_id (self , mock_request_get , mock_datetime ):
10185 mock_datetime .utcnow .return_value .isoformat .return_value = DATETIME_STRING
@@ -107,9 +91,7 @@ def test_v2_locations_id(self, mock_request_get, mock_datetime):
10791
10892 filepath = "tests/expected_output/v2_{state}_id_{test_id}.json" .format (state = state , test_id = test_id )
10993 with open (filepath , "r" ) as file :
110- expected_json_output = file .read ()
111-
112- # assert return_data == expected_json_output
94+ data_read = file .read ()
11395
11496 def tearDown (self ):
11597 pass
0 commit comments