from __future__ import annotations

from pathlib import Path

import pytest

from nutricoach_continuity.observer import require_pass

from .systemd_support import systemd_control


def test_real_systemd_subprocess_simulation_manual_then_natural_timer(
    tmp_path: Path,
    monkeypatch: pytest.MonkeyPatch,
) -> None:
    control, calls = systemd_control(tmp_path, monkeypatch)
    failed = control.fence_timer_and_capture_failed_head()
    manual = control.run_manual(failed)
    require_pass(manual, failed, natural=False)
    subscription = control.subscribe_timer(manual)
    control.restore_timer()
    natural = subscription.await_pass()
    require_pass(natural, manual, natural=True)
    commands = calls.read_text(encoding="utf-8").splitlines()
    assert commands.count("--user start continuity.service") == 1
    assert commands.count("--user start continuity.timer") == 1
    assert natural.previous_digest == manual.digest
