OffGridSchedula / tests /test_ui_handlers.py
ParetoOptimal's picture
Initial Commit
0366d65
Raw
History Blame Contribute Delete
1.71 kB
"""Unit tests for the new Schedule-tab UI handlers (start over, share trace,
screenshot status). Run in stub mode; no network/model needed."""
import os
os.environ.setdefault("USE_STUB_EXTRACTOR", "1")
from ui import blocks # noqa: E402
def test_start_over_clears_everything():
out = blocks._on_start_over()
# conversation, images_in, existing_cal, results(update), status, shot, trace
assert len(out) == 7
assert out[0] == "" # conversation cleared
assert out[1] is None # images cleared
assert out[2] is None # ics cleared
assert out[4] == "" # status cleared
assert out[5] == "" and out[6] == "" # shot + trace cleared
def test_screenshot_status_none_and_some():
assert blocks._screenshot_status(None) == ""
assert blocks._screenshot_status([]) == ""
one = blocks._screenshot_status(["/tmp/a.png"])
assert "1 screenshot" in one and "attached" in one
two = blocks._screenshot_status(["/tmp/a.png", "/tmp/b.png"])
assert "2 screenshots" in two
def test_share_trace_unchecked_is_noop():
assert blocks._on_share_trace(False, [["Picture Day", "2026-06-12T09:00", "", "", 30]]) == ""
def test_share_trace_checked_records_and_reports(tmp_path, monkeypatch):
monkeypatch.setenv("TRACE_PATH", str(tmp_path / "traces.jsonl"))
rows = [["Picture Day", "2026-06-12T09:00", "", "Lincoln", 30]]
msg = blocks._on_share_trace(True, rows)
assert "Privacy-safe trace recorded" in msg
# a redacted line was written (events only)
written = (tmp_path / "traces.jsonl").read_text(encoding="utf-8")
assert "Picture Day" in written and "n_events" in written