42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
import pytest
|
|
from unittest.mock import MagicMock, patch
|
|
from src import paths
|
|
|
|
# We mock App to avoid the heavy initialization logic
|
|
class MockApp:
|
|
def __init__(self):
|
|
self.ui_conductor_dir = '/mock/conductor'
|
|
self.ui_logs_dir = '/mock/logs'
|
|
self.ui_scripts_dir = '/mock/scripts'
|
|
self.config = {"paths": {}}
|
|
self.ai_status = ""
|
|
|
|
def init_state(self):
|
|
pass
|
|
|
|
from src.gui_2 import App
|
|
_save_paths = App._save_paths
|
|
|
|
def test_save_paths():
|
|
mock_app = MockApp()
|
|
|
|
with patch('src.models.save_config') as mock_save, \
|
|
patch('shutil.copy') as mock_copy, \
|
|
patch('src.paths.get_config_path') as mock_get_cfg, \
|
|
patch('src.paths.reset_resolved') as mock_reset, \
|
|
patch.object(MockApp, 'init_state') as mock_init:
|
|
|
|
mock_get_cfg.return_value = MagicMock()
|
|
mock_get_cfg.return_value.exists.return_value = True
|
|
|
|
mock_app.ui_conductor_dir = '/new/conductor'
|
|
mock_app._save_paths()
|
|
|
|
# Verify config update
|
|
assert 'conductor_dir' not in mock_app.config['paths']
|
|
mock_save.assert_called_once()
|
|
mock_copy.assert_called_once()
|
|
assert 'applied' in mock_app.ai_status
|
|
mock_reset.assert_called_once()
|
|
mock_init.assert_called_once()
|