47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
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
|