| """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
|
|
|
|
|
| def test_start_over_clears_everything():
|
| out = blocks._on_start_over()
|
|
|
| assert len(out) == 7
|
| assert out[0] == ""
|
| assert out[1] is None
|
| assert out[2] is None
|
| assert out[4] == ""
|
| assert out[5] == "" and out[6] == ""
|
|
|
|
|
| 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
|
|
|
| written = (tmp_path / "traces.jsonl").read_text(encoding="utf-8")
|
| assert "Picture Day" in written and "n_events" in written
|
|
|