Python · 2443 bytes Raw Blame History
1 """Tests for user-visible definition-of-done status formatting."""
2
3 from loader.cli.rendering import (
4 format_dod_status,
5 format_permission_mode,
6 format_workflow_mode,
7 )
8 from loader.runtime.events import AgentEvent
9 from loader.ui.status_helpers import (
10 format_capability_part,
11 format_definition_of_done_parts,
12 format_permission_mode_part,
13 format_runtime_owner_part,
14 format_session_part,
15 format_turn_phase_part,
16 format_workflow_mode_part,
17 )
18
19
20 def test_status_helper_formats_definition_of_done_parts() -> None:
21 parts = format_definition_of_done_parts("verifying", 1, "failed", "attempt 2")
22
23 assert parts == [
24 "[yellow]DoD: verifying[/yellow]",
25 "[dim]1 pending[/dim]",
26 "[red]verify failed (attempt 2)[/red]",
27 ]
28
29
30 def test_status_helper_omits_definition_of_done_when_absent() -> None:
31 assert format_definition_of_done_parts("", 0, "") == []
32
33
34 def test_cli_dod_status_format_includes_pending_and_verification() -> None:
35 event = AgentEvent(
36 type="dod_status",
37 dod_status="fixing",
38 pending_items_count=2,
39 last_verification_result="failed",
40 )
41
42 formatted = format_dod_status(event)
43
44 assert formatted == "DoD: fixing | 2 pending | last verify: failed"
45
46
47 def test_permission_mode_helpers_use_expected_colors() -> None:
48 assert format_permission_mode_part("read-only") == "[green]perm read-only[/green]"
49 assert format_permission_mode("danger-full-access") == "[red]danger-full-access[/red]"
50 assert format_permission_mode_part("prompt") == "[magenta]perm prompt[/magenta]"
51 assert format_permission_mode("allow") == "[cyan]allow[/cyan]"
52
53
54 def test_workflow_mode_helpers_use_expected_colors() -> None:
55 assert format_workflow_mode_part("plan") == "[cyan]flow plan[/cyan]"
56 assert format_workflow_mode("verify") == "[green]verify[/green]"
57
58
59 def test_turn_phase_helpers_use_expected_colors() -> None:
60 assert format_turn_phase_part("repair") == "[magenta]phase repair[/magenta]"
61 assert format_turn_phase_part("completion") == "[green]phase completion[/green]"
62
63
64 def test_status_helpers_format_capability_and_session_parts() -> None:
65 assert format_capability_part("native/strict") == "[dim]cap native/strict[/dim]"
66 assert format_session_part("20260406T120000Z-abcdef01") == "[dim]session abcdef01[/dim]"
67 assert format_runtime_owner_part("runtime-handle") == "[dim]owner runtime-handle[/dim]"