from unittest.mock import patch import sys import os from typing import Any # Ensure project root is in path for imports sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) from gui_2 import App def test_telemetry_data_updates_correctly(app_instance: Any) -> None: """ Tests that the _refresh_api_metrics method correctly updates the internal state for display. """ # 1. Set the provider to anthropic app_instance._current_provider = "anthropic" # 2. Define the mock stats mock_stats = { "provider": "anthropic", "limit": 180000, "current": 135000, "percentage": 75.0, } # 3. Patch the dependencies with patch('ai_client.get_token_stats', return_value=mock_stats) as mock_get_stats: # 4. Call the method under test app_instance._refresh_api_metrics({}, md_content="test content") # 5. Assert the results mock_get_stats.assert_called_once() assert app_instance._token_stats["percentage"] == 75.0 def test_performance_history_updates(app_instance: Any) -> None: """ Verify the data structure that feeds the sparkline. """ assert len(app_instance.perf_history["frame_time"]) == 100 assert app_instance.perf_history["frame_time"][-1] == 0.0 def test_gui_updates_on_event(app_instance: App) -> None: mock_stats = {"percentage": 50.0, "current": 500, "limit": 1000} app_instance.last_md = "mock_md" with patch('ai_client.get_token_stats', return_value=mock_stats): app_instance._on_api_event(payload={"text": "test"}) app_instance._process_pending_gui_tasks() assert app_instance._token_stats["percentage"] == 50.0