Skip to content

Commit f6640cb

Browse files
committed
assert_equal: formatted json-strings make debugging easier
1 parent cf6006b commit f6640cb

File tree

1 file changed

+24
-42
lines changed

1 file changed

+24
-42
lines changed

tests/test_routes.py

Lines changed: 24 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,24 @@
1313
from .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)
1836
class 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

Comments
 (0)