"""Tests for display render functions and DisplayAdapter.""" from unittest.mock import MagicMock from rich.panel import Panel from rich.table import Table from rich.text import Text from app.models.message import Message from app.utils.display import ( DisplayAdapter, render_assistant_message, render_error, render_iteration_header, render_tool_call, render_tool_result, render_token_usage, render_user_message, render_warning, ) class TestRenderFunctions: def test_render_user_message_returns_panel(self) -> None: result = render_user_message("hello") assert isinstance(result, Panel) assert result.title == "You" def test_render_assistant_message_returns_panel(self) -> None: result = render_assistant_message("response") assert isinstance(result, Panel) assert result.title == "Assistant" def test_render_tool_call_returns_text(self) -> None: result = render_tool_call("read_file", '{"path": "foo.py"}') assert isinstance(result, Text) assert "read_file" in result.plain def test_render_tool_result_success(self) -> None: result = render_tool_result("read_file", "file contents here", is_error=False) assert isinstance(result, Text) assert "read_file" in result.plain def test_render_tool_result_error(self) -> None: result = render_tool_result("read_file", "not found", is_error=True) assert isinstance(result, Text) assert "read_file" in result.plain def test_render_iteration_header(self) -> None: result = render_iteration_header(3, 25) assert isinstance(result, Text) assert "3/25" in result.plain def test_render_token_usage(self) -> None: result = render_token_usage(1500, 32000) assert isinstance(result, Text) assert "1,500" in result.plain def test_render_warning(self) -> None: result = render_warning("something happened") assert isinstance(result, Text) def test_render_error(self) -> None: result = render_error("bad thing") assert isinstance(result, Text) class TestDisplayAdapter: def test_write_user_message(self) -> None: mock_log = MagicMock() adapter = DisplayAdapter(mock_log) adapter.write_user_message("hello") mock_log.write.assert_called_once() arg = mock_log.write.call_args[0][0] assert isinstance(arg, Panel) def test_write_tool_call(self) -> None: mock_log = MagicMock() adapter = DisplayAdapter(mock_log) adapter.write_tool_call("read_file", '{"path": "x"}') mock_log.write.assert_called_once() def test_write_warning(self) -> None: mock_log = MagicMock() adapter = DisplayAdapter(mock_log) adapter.write_warning("oops") mock_log.write.assert_called_once()