"""Tests für src/health_run.py - Zustandsübergänge des manuellen Health-Runs.""" from health_run import new_state, try_start, mark_finished, mark_failed def test_initial_state_is_idle(): s = new_state() assert s["running"] is False assert s["started_at"] is None assert s["finished_at"] is None assert s["result"] is None assert s["error"] is None def test_try_start_sets_running_and_resets(): s = new_state() s["result"] = {"checked": 1} s["error"] = "alt" assert try_start(s, now="2026-07-25T12:00:00") is True assert s["running"] is True assert s["started_at"] == "2026-07-25T12:00:00" assert s["finished_at"] is None assert s["result"] is None assert s["error"] is None def test_double_start_blocked(): s = new_state() assert try_start(s) is True assert try_start(s) is False def test_mark_finished_allows_restart(): s = new_state() try_start(s, now="2026-07-25T12:00:00") mark_finished(s, {"checked": 430, "issues": 110, "suggestions": 3}, now="2026-07-25T12:05:00") assert s["running"] is False assert s["finished_at"] == "2026-07-25T12:05:00" assert s["result"]["checked"] == 430 assert s["error"] is None assert try_start(s) is True def test_mark_failed_sets_error(): s = new_state() try_start(s) mark_failed(s, "Verbindung weg", now="2026-07-25T12:01:00") assert s["running"] is False assert s["error"] == "Verbindung weg" assert s["result"] is None assert try_start(s) is True