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