36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
import pytest
|
|
import sys
|
|
import os
|
|
from unittest.mock import patch
|
|
from typing import Generator, Any
|
|
from gui_2 import App
|
|
import ai_client
|
|
|
|
# Ensure project root is in path
|
|
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
|
|
|
|
@pytest.fixture
|
|
def app_instance() -> Generator[App, None, None]:
|
|
"""
|
|
Fixture to create an instance of the App class for testing.
|
|
"""
|
|
with patch('gui_2.load_config', return_value={}), \
|
|
patch('gui_2.PerformanceMonitor'), \
|
|
patch('gui_2.session_logger'), \
|
|
patch.object(App, '_prune_old_logs'), \
|
|
patch.object(App, '_load_active_project'):
|
|
app = App()
|
|
yield app
|
|
|
|
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) as mock_get_stats:
|
|
# Simulate event
|
|
ai_client.events.emit("response_received", payload={"text": "test"})
|
|
# Process tasks manually
|
|
app_instance._process_pending_gui_tasks()
|
|
# Verify that _token_stats was updated (via _refresh_api_metrics)
|
|
assert app_instance._token_stats["percentage"] == 50.0
|
|
assert app_instance._token_stats["current"] == 500
|