Files
manual_slop/tests/test_gui_updates.py

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