"""CAL_ICS_PATH: a locally hosted install can auto-complete the conflict-check step — _load_busy falls back to the env-pointed .ics when nothing is uploaded.""" from calendar_out.ics import events_to_ics from server.schema import Event from ui import blocks def _sample_ics_bytes() -> bytes: return events_to_ics([ Event(title="Dentist", start="2026-06-18T09:00:00", end="2026-06-18T10:00:00"), ]) def test_load_busy_env_fallback(tmp_path, monkeypatch): ics = tmp_path / "cal.ics" ics.write_bytes(_sample_ics_bytes()) monkeypatch.setenv("CAL_ICS_PATH", str(ics)) busy = blocks._load_busy(None) assert len(busy) == 1 assert busy[0].title == "Dentist" def test_load_busy_upload_overrides_env(tmp_path, monkeypatch): env_ics = tmp_path / "env.ics" env_ics.write_bytes(_sample_ics_bytes()) upload = tmp_path / "upload.ics" upload.write_bytes(events_to_ics([ Event(title="Soccer", start="2026-06-19T17:00:00", end="2026-06-19T18:00:00"), ])) monkeypatch.setenv("CAL_ICS_PATH", str(env_ics)) busy = blocks._load_busy(str(upload)) assert [b.title for b in busy] == ["Soccer"] def test_load_busy_unset_env_is_empty(monkeypatch): monkeypatch.delenv("CAL_ICS_PATH", raising=False) assert blocks._load_busy(None) == []