| 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]" |