from datetime import datetime from recap.models import Event from recap.timeline import build_timeline def _ev(date_iso, cat="lab", title="t"): return Event( id=date_iso, date=datetime.fromisoformat(date_iso), category=cat, title=title, source="x", ) def test_timeline_sorts_chronologically(): events = [_ev("2023-01-01"), _ev("2020-05-15"), _ev("2022-12-31")] tl = build_timeline(events) dates = [e.date for e in tl.events] assert dates == sorted(dates) def test_timeline_groups_by_year(): events = [_ev("2020-01-01"), _ev("2020-06-01"), _ev("2021-01-01")] tl = build_timeline(events) assert sorted(tl.years_covered) == [2020, 2021] def test_empty_timeline_handles_zero_events(): tl = build_timeline([]) assert tl.events == [] assert tl.years_covered == []