150 Zeilen
4.6 KiB
Python
150 Zeilen
4.6 KiB
Python
"""
|
|
API Compatibility Tests for MainWindow Refactoring
|
|
Dokumentiert alle öffentlichen Methoden der MainWindow Klasse
|
|
um sicherzustellen, dass keine Breaking Changes auftreten.
|
|
"""
|
|
|
|
import unittest
|
|
from unittest.mock import Mock, patch, MagicMock
|
|
import sys
|
|
import os
|
|
|
|
# Add parent directory to path
|
|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
|
|
# Mock all GUI dependencies before import
|
|
sys.modules['customtkinter'] = MagicMock()
|
|
sys.modules['tkinter'] = MagicMock()
|
|
sys.modules['PIL'] = MagicMock()
|
|
sys.modules['PIL.Image'] = MagicMock()
|
|
|
|
class TestMainWindowAPI(unittest.TestCase):
|
|
"""Test to ensure all public methods exist after refactoring"""
|
|
|
|
# Liste aller öffentlichen Methoden der MainWindow Klasse
|
|
# Generiert aus der Analyse vom 2025-07-05
|
|
REQUIRED_PUBLIC_METHODS = [
|
|
'__init__',
|
|
'setup_ui',
|
|
'create_header',
|
|
'create_content_area',
|
|
'create_status_bar',
|
|
'refresh_projects',
|
|
'create_project_tile',
|
|
'create_add_tile',
|
|
'create_project_tile_flow',
|
|
'create_add_tile_flow',
|
|
'add_new_project',
|
|
'open_project',
|
|
'open_vps_connection',
|
|
'open_admin_panel',
|
|
'open_vps_docker',
|
|
'open_readme',
|
|
'delete_project',
|
|
'rename_project',
|
|
'generate_readme_background',
|
|
'update_status',
|
|
'download_log',
|
|
'refresh_ui',
|
|
'load_and_apply_theme',
|
|
'on_window_resize',
|
|
'stop_project',
|
|
'setup_interaction_tracking',
|
|
'monitor_process',
|
|
'check_process_status',
|
|
'open_gitea_window',
|
|
'on_gitea_repo_select',
|
|
'clear_project_selection',
|
|
'on_project_select',
|
|
'show_git_status',
|
|
'commit_changes',
|
|
'push_to_gitea',
|
|
'pull_from_gitea',
|
|
'fetch_from_gitea',
|
|
'manage_branches',
|
|
'link_to_gitea',
|
|
'clone_repository',
|
|
'create_project_from_repo',
|
|
'on_closing',
|
|
'gitea_operation',
|
|
'init_and_push_to_gitea',
|
|
'init_git_repo',
|
|
'test_gitea_connection',
|
|
'verify_repository_on_gitea',
|
|
'fix_repository_issues',
|
|
'manage_large_files',
|
|
'setup_git_lfs',
|
|
'run'
|
|
]
|
|
|
|
# Private/Protected Methoden die NICHT Teil der öffentlichen API sind
|
|
PRIVATE_METHODS = [
|
|
'_differential_update',
|
|
'_update_project_tiles_colors',
|
|
'_on_click_start',
|
|
'_on_click_end',
|
|
'_on_dropdown_select',
|
|
'_on_focus_in',
|
|
'_on_focus_out',
|
|
'_check_pending_updates',
|
|
'_handle_process_ended',
|
|
'_create_project_after_clone',
|
|
'_show_scrollable_info'
|
|
]
|
|
|
|
@patch('gui.main_window.logger')
|
|
@patch('gui.main_window.ProjectProcessTracker')
|
|
@patch('gui.main_window.ProcessManager')
|
|
@patch('gui.main_window.VPSConnection')
|
|
@patch('gui.main_window.ReadmeGenerator')
|
|
@patch('gui.main_window.TerminalLauncher')
|
|
@patch('gui.main_window.ProjectManager')
|
|
@patch('gui.main_window.RepositoryManager')
|
|
def test_all_public_methods_exist(self, *mocks):
|
|
"""Testet dass alle öffentlichen Methoden existieren"""
|
|
# Import after all mocks are set up
|
|
from gui.main_window import MainWindow
|
|
|
|
# Check that all required methods exist
|
|
missing_methods = []
|
|
for method_name in self.REQUIRED_PUBLIC_METHODS:
|
|
if not hasattr(MainWindow, method_name):
|
|
missing_methods.append(method_name)
|
|
|
|
self.assertEqual(
|
|
missing_methods,
|
|
[],
|
|
f"Following public methods are missing: {missing_methods}"
|
|
)
|
|
|
|
def test_no_unexpected_public_methods(self):
|
|
"""Warnt vor neuen öffentlichen Methoden die dokumentiert werden sollten"""
|
|
# This test will be implemented after import works
|
|
pass
|
|
|
|
|
|
class TestMainWindowBehavior(unittest.TestCase):
|
|
"""Behavioral tests for critical MainWindow operations"""
|
|
|
|
def setUp(self):
|
|
"""Set up test fixtures"""
|
|
self.window = None
|
|
|
|
def test_project_lifecycle(self):
|
|
"""Test basic project creation, opening and deletion"""
|
|
# TODO: Implement after mocking is complete
|
|
pass
|
|
|
|
def test_gitea_operations(self):
|
|
"""Test Gitea integration operations"""
|
|
# TODO: Test init_and_push_to_gitea, push_to_gitea, etc.
|
|
pass
|
|
|
|
def test_duplicate_methods_behavior(self):
|
|
"""Ensure duplicate methods have consistent behavior"""
|
|
# TODO: Compare behavior of duplicate methods
|
|
pass
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main() |