WIP: GARBAGE LANGUAGE
This commit is contained in:
@@ -1,55 +1,48 @@
|
||||
from typing import Generator
|
||||
import pytest
|
||||
from unittest.mock import patch
|
||||
import ai_client
|
||||
from gui_2 import App
|
||||
from unittest.mock import patch, MagicMock
|
||||
from src import ai_client
|
||||
from src.gui_2 import App
|
||||
|
||||
@pytest.fixture
|
||||
def app_instance() -> Generator[App, None, None]:
|
||||
with (
|
||||
patch('src.models.load_config', return_value={'ai': {'provider': 'gemini', 'model': 'gemini-2.5-flash-lite'}, 'projects': {}}),
|
||||
patch('gui_2.save_config'),
|
||||
patch('gui_2.project_manager'),
|
||||
patch('gui_2.session_logger'),
|
||||
patch('gui_2.immapp.run'),
|
||||
patch('src.gui_2.save_config'),
|
||||
patch('src.gui_2.project_manager'),
|
||||
patch('src.gui_2.session_logger'),
|
||||
patch('src.gui_2.immapp.run'),
|
||||
patch('src.app_controller.AppController._load_active_project'),
|
||||
patch('src.app_controller.AppController._fetch_models'),
|
||||
patch.object(App, '_load_fonts'),
|
||||
patch.object(App, '_post_init'),
|
||||
patch('src.app_controller.AppController._prune_old_logs'),
|
||||
patch('src.app_controller.AppController.start_services'),
|
||||
patch('src.app_controller.AppController._init_ai_and_hooks'),
|
||||
patch('ai_client.set_provider'),
|
||||
patch('ai_client.reset_session')
|
||||
# Do not patch _init_ai_and_hooks to ensure _settable_fields is initialized
|
||||
patch('src.api_hooks.HookServer'),
|
||||
patch('src.ai_client.set_provider'),
|
||||
patch('src.ai_client.reset_session')
|
||||
):
|
||||
app = App()
|
||||
yield app
|
||||
|
||||
def test_redundant_calls_in_process_pending_gui_tasks(app_instance: App) -> None:
|
||||
app_instance._pending_gui_tasks = [
|
||||
app_instance.controller._pending_gui_tasks = [
|
||||
{'action': 'set_value', 'item': 'current_provider', 'value': 'anthropic'}
|
||||
]
|
||||
with patch('ai_client.set_provider') as mock_set_provider, \
|
||||
patch('ai_client.reset_session') as mock_reset_session:
|
||||
# We need to make sure the property setter's internal calls are also tracked or mocked.
|
||||
# However, the App instance was created with mocked ai_client.
|
||||
# Let's re-patch it specifically for this test.
|
||||
app_instance._process_pending_gui_tasks()
|
||||
# current_provider setter calls:
|
||||
# ai_client.reset_session()
|
||||
# ai_client.set_provider(value, self.current_model)
|
||||
# _process_pending_gui_tasks NO LONGER calls it redundantly:
|
||||
# Total should be 1 call for each.
|
||||
with patch('src.ai_client.set_provider') as mock_set_provider, \
|
||||
patch('src.ai_client.reset_session') as mock_reset_session:
|
||||
app_instance.controller._process_pending_gui_tasks()
|
||||
assert mock_set_provider.call_count == 1
|
||||
assert mock_reset_session.call_count == 1
|
||||
|
||||
def test_gcli_path_updates_adapter(app_instance: App) -> None:
|
||||
app_instance.current_provider = 'gemini_cli'
|
||||
app_instance._pending_gui_tasks = [
|
||||
app_instance.controller.current_provider = 'gemini_cli'
|
||||
app_instance.controller._pending_gui_tasks = [
|
||||
{'action': 'set_value', 'item': 'gcli_path', 'value': '/new/path/to/gemini'}
|
||||
]
|
||||
# Initialize adapter if it doesn't exist (it shouldn't in mock env)
|
||||
ai_client._gemini_cli_adapter = None
|
||||
app_instance._process_pending_gui_tasks()
|
||||
app_instance.controller._process_pending_gui_tasks()
|
||||
assert ai_client._gemini_cli_adapter is not None
|
||||
assert ai_client._gemini_cli_adapter.binary_path == '/new/path/to/gemini'
|
||||
|
||||
Reference in New Issue
Block a user