diff --git a/tests/copilot_usage/test_render_detail.py b/tests/copilot_usage/test_render_detail.py index 186c7498..a60fe4eb 100644 --- a/tests/copilot_usage/test_render_detail.py +++ b/tests/copilot_usage/test_render_detail.py @@ -22,6 +22,7 @@ ToolTelemetry, ) from copilot_usage.render_detail import ( + _build_event_details, _extract_tool_name, _render_code_changes, _render_recent_events, @@ -608,3 +609,41 @@ def test_multi_model_shutdown_via_full_render(self) -> None: row = next(line for line in output.splitlines() if "2025-01-01 01:00" in line) assert re.search(r"\b7\b", row) # total model calls = 3 + 4 assert re.search(r"\b800\b", row) # total output tokens = 500 + 300 + + +# --------------------------------------------------------------------------- +# Issue #860 — untested branch in _build_event_details +# --------------------------------------------------------------------------- + + +class TestBuildEventDetailsUntestedBranches: + """Cover untested branches in _build_event_details: + + 1. SESSION_SHUTDOWN with falsy shutdownType → returns "". + 2. TOOL_EXECUTION_COMPLETE with truthy model → includes model=. + """ + + def test_session_shutdown_with_falsy_shutdown_type(self) -> None: + """SESSION_SHUTDOWN with shutdownType='' returns empty string.""" + ev = SessionEvent( + type=EventType.SESSION_SHUTDOWN, + data={"totalPremiumRequests": 5}, + ) + detail = _build_event_details(ev) + assert detail == "" + + def test_tool_execution_complete_with_model(self) -> None: + """TOOL_EXECUTION_COMPLETE with model field includes model= in detail.""" + ev = SessionEvent( + type=EventType.TOOL_EXECUTION_COMPLETE, + data={ + "toolCallId": "t1", + "success": True, + "model": "claude-sonnet-4", + "toolTelemetry": {"properties": {"tool_name": "bash"}}, + }, + ) + detail = _build_event_details(ev) + assert "model=claude-sonnet-4" in detail + assert "bash" in detail + assert "✓" in detail