53 lines
1.7 KiB
Python
53 lines
1.7 KiB
Python
import pandas as pd
|
|
import pytest
|
|
|
|
from data_processing import filter_by_date, hourly_average
|
|
|
|
|
|
@pytest.fixture
|
|
def sample_df():
|
|
return pd.DataFrame(
|
|
{
|
|
"timestamp": pd.to_datetime(
|
|
[
|
|
"2026-07-22 08:05",
|
|
"2026-07-22 08:40",
|
|
"2026-07-22 09:10",
|
|
"2026-07-23 08:05", # andere dag, moet uitgefilterd worden
|
|
]
|
|
),
|
|
"glucose_value": [6.0, 8.0, 7.0, 12.0],
|
|
}
|
|
)
|
|
|
|
|
|
def test_filter_by_date_keeps_only_selected_day(sample_df):
|
|
result = filter_by_date(sample_df, pd.Timestamp("2026-07-22").date())
|
|
assert len(result) == 3
|
|
assert (result["timestamp"].dt.date == pd.Timestamp("2026-07-22").date()).all()
|
|
|
|
|
|
def test_hourly_average_computes_mean_per_hour(sample_df):
|
|
filtered = filter_by_date(sample_df, pd.Timestamp("2026-07-22").date())
|
|
result = hourly_average(filtered)
|
|
|
|
hour_8 = result.loc[result["hour"] == 8, "glucose_value"].iloc[0]
|
|
hour_9 = result.loc[result["hour"] == 9, "glucose_value"].iloc[0]
|
|
|
|
assert hour_8 == pytest.approx(7.0) # gemiddelde van 6.0 en 8.0
|
|
assert hour_9 == pytest.approx(7.0)
|
|
|
|
|
|
def test_hourly_average_handles_empty_input():
|
|
empty = pd.DataFrame(columns=["timestamp", "glucose_value"])
|
|
result = hourly_average(empty)
|
|
assert result.empty
|
|
assert list(result.columns) == ["hour", "glucose_value"]
|
|
|
|
|
|
def test_hourly_average_only_returns_hours_with_data(sample_df):
|
|
filtered = filter_by_date(sample_df, pd.Timestamp("2026-07-22").date())
|
|
result = hourly_average(filtered)
|
|
# alleen uur 8 en 9 hebben data op deze dag, dus precies 2 rijen
|
|
assert len(result) == 2
|