Files
manual_slop/tests/test_mma_dashboard_refresh.py
Ed_ 2d92674aa0 fix(controller): Add stop_services() and dialog imports for GUI decoupling
- Add AppController.stop_services() to clean up AI client and event loop
- Add ConfirmDialog, MMAApprovalDialog, MMASpawnApprovalDialog imports to gui_2.py
- Fix test mocks for MMA dashboard and approval indicators
- Add retry logic to conftest.py for Windows file lock cleanup
2026-03-04 20:16:16 -05:00

76 lines
2.3 KiB
Python

import pytest
from unittest.mock import patch, MagicMock
from typing import Any
from gui_2 import App
@pytest.fixture
def app_instance() -> Any:
with (
patch("src.models.load_config", return_value={"ai": {}, "projects": {}}),
patch("gui_2.save_config"),
patch("gui_2.project_manager"),
patch("app_controller.project_manager") as mock_pm,
patch("gui_2.session_logger"),
patch("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"),
):
app = App()
app.project = {}
app.ui_files_base_dir = "."
yield app, mock_pm
def test_mma_dashboard_refresh(app_instance: Any) -> None:
app, mock_pm = app_instance
mock_tracks = [
{
"id": "track_1",
"title": "Track 1",
"status": "new",
"complete": 0,
"total": 0,
"progress": 0.0,
},
{
"id": "track_2",
"title": "Track 2",
"status": "new",
"complete": 0,
"total": 0,
"progress": 0.0,
},
]
mock_pm.get_all_tracks.return_value = mock_tracks
app._refresh_from_project()
assert hasattr(app, "tracks"), "App instance should have a 'tracks' attribute"
assert app.tracks == mock_tracks
assert len(app.tracks) == 2
assert app.tracks[0]["id"] == "track_1"
assert app.tracks[1]["id"] == "track_2"
mock_pm.get_all_tracks.assert_called_with(app.ui_files_base_dir)
def test_mma_dashboard_initialization_refresh(app_instance: Any) -> None:
app, mock_pm = app_instance
mock_tracks = [
{
"id": "init_track",
"title": "Initial Track",
"status": "new",
"complete": 0,
"total": 0,
"progress": 0.0,
}
]
mock_pm.get_all_tracks.return_value = mock_tracks
app._refresh_from_project()
assert app.tracks == mock_tracks
assert app.tracks[0]["id"] == "init_track"