chore(tech-debt): Finalize gui_2.py cleanup and test suite discipline
This commit is contained in:
@@ -4,32 +4,16 @@ from unittest.mock import MagicMock, patch
|
||||
from gui_2 import App
|
||||
from models import Track
|
||||
|
||||
@pytest.fixture
|
||||
def mock_app() -> App:
|
||||
with (
|
||||
patch('gui_2.load_config', return_value={
|
||||
"ai": {"provider": "gemini", "model": "model-1"},
|
||||
"projects": {"paths": [], "active": ""},
|
||||
"gui": {"show_windows": {}}
|
||||
}),
|
||||
patch('gui_2.project_manager.load_project', return_value={}),
|
||||
patch('gui_2.project_manager.migrate_from_legacy_config', return_value={}),
|
||||
patch('gui_2.project_manager.save_project'),
|
||||
patch('gui_2.session_logger.open_session'),
|
||||
patch('gui_2.App._init_ai_and_hooks'),
|
||||
patch('gui_2.App._fetch_models'),
|
||||
patch('gui_2.App._prune_old_logs')
|
||||
):
|
||||
app = App()
|
||||
app._discussion_names_dirty = True
|
||||
app._discussion_names_cache = []
|
||||
app.active_track = Track(id="track-1", description="Test Track", tickets=[])
|
||||
app.active_tickets = []
|
||||
app.ui_files_base_dir = "."
|
||||
app.disc_roles = ["User", "AI"]
|
||||
app.active_discussion = "main"
|
||||
app.project = {"discussion": {"discussions": {"main": {"history": []}}}}
|
||||
return app
|
||||
@pytest.fixture(autouse=True)
|
||||
def setup_mock_app(mock_app: App):
|
||||
mock_app._discussion_names_dirty = True
|
||||
mock_app._discussion_names_cache = []
|
||||
mock_app.active_track = Track(id="track-1", description="Test Track", tickets=[])
|
||||
mock_app.active_tickets = []
|
||||
mock_app.ui_files_base_dir = "."
|
||||
mock_app.disc_roles = ["User", "AI"]
|
||||
mock_app.active_discussion = "main"
|
||||
mock_app.project = {"discussion": {"discussions": {"main": {"history": []}}}}
|
||||
|
||||
def test_add_ticket_logic(mock_app: App):
|
||||
# Mock imgui calls to simulate clicking "Create" in the form
|
||||
@@ -109,6 +93,7 @@ def test_track_discussion_toggle(mock_app: App):
|
||||
with (
|
||||
patch('gui_2.imgui') as mock_imgui,
|
||||
patch('gui_2.project_manager.load_track_history', return_value=["@2026-03-01 12:00:00\n[User]\nTrack Hello"]) as mock_load,
|
||||
patch('gui_2.project_manager.str_to_entry', side_effect=lambda s, roles: {"ts": "12:00", "role": "User", "content": s.split("\n")[-1]}),
|
||||
patch.object(mock_app, '_flush_disc_entries_to_project') as mock_flush,
|
||||
patch.object(mock_app, '_switch_discussion') as mock_switch
|
||||
):
|
||||
@@ -162,8 +147,8 @@ def test_track_discussion_toggle(mock_app: App):
|
||||
|
||||
def test_push_mma_state_update(mock_app: App):
|
||||
mock_app.active_tickets = [{"id": "T-001", "description": "desc", "status": "todo", "assigned_to": "tier3-worker", "depends_on": []}]
|
||||
with patch('gui_2.project_manager.save_track_state') as mock_save, \
|
||||
patch('gui_2.project_manager.load_track_state', return_value=None):
|
||||
with patch('project_manager.save_track_state') as mock_save, \
|
||||
patch('project_manager.load_track_state', return_value=None):
|
||||
mock_app._push_mma_state_update()
|
||||
|
||||
assert len(mock_app.active_track.tickets) == 1
|
||||
|
||||
Reference in New Issue
Block a user