11import app
22import unittest
3+ from fastapi .testclient import TestClient
34import json
45from unittest import mock
56from app import services
7+ from app .main import APP
68
79from .test_jhu import mocked_requests_get , mocked_strptime_isoformat , DATETIME_STRING
810
@@ -20,6 +22,7 @@ class FlaskRoutesTest(unittest.TestCase):
2022
2123 def setUp (self ):
2224 self .client = FlaskRoutesTest .app .test_client ()
25+ self .asgi_client = TestClient (APP )
2326 self .date = DATETIME_STRING
2427
2528 def read_file_v1 (self , state ):
@@ -29,15 +32,11 @@ def read_file_v1(self, state):
2932 return expected_json_output
3033
3134 def test_root_api (self , mock_request_get , mock_datetime ):
32- """Validate redirections of /"""
33- mock_datetime .utcnow .return_value .isoformat .return_value = self .date
34- mock_datetime .strptime .side_effect = mocked_strptime_isoformat
35- return_data = self .client .get ("/" )
35+ """Validate that / returns content and is not a redirect."""
36+ response = self .asgi_client .get ("/" )
3637
37- assert return_data .status_code == 302
38-
39- assert dict (return_data .headers )["Location" ] == \
40- "https://github.com/ExpDev07/coronavirus-tracker-api"
38+ assert response .status_code == 200
39+ assert not response .is_redirect
4140
4241 def test_v1_confirmed (self , mock_request_get , mock_datetime ):
4342 mock_datetime .utcnow .return_value .isoformat .return_value = self .date
@@ -79,8 +78,7 @@ def test_v2_latest(self, mock_request_get, mock_datetime):
7978 mock_datetime .utcnow .return_value .isoformat .return_value = DATETIME_STRING
8079 mock_datetime .strptime .side_effect = mocked_strptime_isoformat
8180 state = "latest"
82- return_data = self .client .get ("/v2/{}" .format (state )).data .decode ()
83- return_data = json .loads (return_data )
81+ return_data = self .asgi_client .get (f"/v2/{ state } " ).json ()
8482
8583 check_dict = {
8684 'latest' : {
@@ -96,21 +94,21 @@ def test_v2_locations(self, mock_request_get, mock_datetime):
9694 mock_datetime .utcnow .return_value .isoformat .return_value = DATETIME_STRING
9795 mock_datetime .strptime .side_effect = mocked_strptime_isoformat
9896 state = "locations"
99- return_data = self .client .get ("/v2/{}" .format (state )).data . decode ()
97+ return_data = self .asgi_client .get ("/v2/{}" .format (state )).json ()
10098
10199 filepath = "tests/expected_output/v2_{state}.json" .format (state = state )
102100 with open (filepath , "r" ) as file :
103101 expected_json_output = file .read ()
104102
105- #assert return_data == expected_json_output
103+ # assert return_data == json.loads( expected_json_output)
106104
107105 def test_v2_locations_id (self , mock_request_get , mock_datetime ):
108106 mock_datetime .utcnow .return_value .isoformat .return_value = DATETIME_STRING
109107 mock_datetime .strptime .side_effect = mocked_strptime_isoformat
110108
111109 state = "locations"
112110 test_id = 1
113- return_data = self .client .get ("/v2/{}/{}" .format (state , test_id )).data . decode ()
111+ return_data = self .asgi_client .get ("/v2/{}/{}" .format (state , test_id )).json ()
114112
115113 filepath = "tests/expected_output/v2_{state}_id_{test_id}.json" .format (state = state , test_id = test_id )
116114 with open (filepath , "r" ) as file :
0 commit comments