Skip to content

Commit e1c1d17

Browse files
author
PJ Hoberman
committed
added tests around chart descriptions
1 parent abaa30a commit e1c1d17

File tree

1 file changed

+40
-1
lines changed

1 file changed

+40
-1
lines changed

tests/test_app.py

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
"""Tests."""
22

3+
from math import ceil # type: ignore
4+
import datetime # type: ignore
35
import pytest # type: ignore
46
import pandas as pd # type: ignore
57
import numpy as np # type: ignore
68
import altair as alt # type: ignore
79

8-
from src.penn_chime.charts import new_admissions_chart, admitted_patients_chart
10+
from src.penn_chime.charts import new_admissions_chart, admitted_patients_chart, chart_descriptions
911
from src.penn_chime.models import sir, sim_sir
1012
from src.penn_chime.parameters import Parameters
1113
from src.penn_chime.presentation import display_header
@@ -233,3 +235,40 @@ def test_parameters():
233235
# change n_days, make sure it cascades
234236
param.n_days = 2
235237
assert len(param.susceptible_v) == len(param.infected_v) == len(param.recovered_v) == param.n_days + 1 == 3
238+
239+
240+
def test_chart_descriptions():
241+
# new admissions chart
242+
projection_admits = pd.read_csv('tests/projection_admits.csv')
243+
projection_admits = projection_admits.rename(columns={'hosp': 'Hospitalized', 'icu': 'ICU', 'vent': 'Ventilated'})
244+
chart = new_admissions_chart(alt, projection_admits, PARAM)
245+
description = chart_descriptions(chart)
246+
247+
hosp, icu, vent, asterisk = description.split("\n\n") # break out the description into lines
248+
249+
max_hosp = chart.data['Hospitalized'].max()
250+
assert str(ceil(max_hosp)) in hosp
251+
252+
max_icu_ix = chart.data['ICU'].idxmax()
253+
assert max_icu_ix + 1 == len(chart.data)
254+
assert "*" in icu
255+
256+
# test asterisk
257+
param = PARAM
258+
param.n_days = 600
259+
260+
projection_admits = pd.read_csv('tests/projection_admits.csv')
261+
projection_admits = projection_admits.rename(columns={'hosp': 'Hospitalized', 'icu': 'ICU', 'vent': 'Ventilated'})
262+
chart = new_admissions_chart(alt, projection_admits, PARAM)
263+
description = chart_descriptions(chart)
264+
assert "*" not in description
265+
266+
# census chart
267+
census_df = pd.read_csv('tests/census_df.csv')
268+
census_df = census_df.rename(columns={'hosp': 'Hospitalized', 'icu': 'ICU', 'vent': 'Ventilated'})
269+
chart = admitted_patients_chart(alt, census_df, PARAM, as_date=True)
270+
description = chart_descriptions(chart)
271+
272+
assert str(ceil(chart.data['Ventilated'].max())) in description
273+
assert str(chart.data['ICU'].idxmax()) not in description
274+
assert datetime.datetime.strftime(chart.data.iloc[chart.data['ICU'].idxmax()].date, '%b %d') in description

0 commit comments

Comments
 (0)