Initial commit
Dieser Commit ist enthalten in:
213
test_refactoring.py
Normale Datei
213
test_refactoring.py
Normale Datei
@ -0,0 +1,213 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Test script for refactoring verification
|
||||
Tests that refactored methods work correctly
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
# Mock GUI dependencies
|
||||
sys.modules['customtkinter'] = MagicMock()
|
||||
sys.modules['tkinter'] = MagicMock()
|
||||
sys.modules['PIL'] = MagicMock()
|
||||
sys.modules['PIL.Image'] = MagicMock()
|
||||
|
||||
# Import after mocking
|
||||
from gui.config import refactoring_config
|
||||
from gui.main_window import MainWindow
|
||||
|
||||
def test_ui_helpers():
|
||||
"""Test UI helpers functionality"""
|
||||
print("\n=== Testing UI Helpers ===")
|
||||
|
||||
# Check current configuration
|
||||
status = refactoring_config.get_status()
|
||||
print(f"USE_UI_HELPERS: {status['flags']['USE_UI_HELPERS']}")
|
||||
|
||||
# Mock required components
|
||||
with MagicMock() as mock_project_manager:
|
||||
mock_project_manager.get_projects.return_value = []
|
||||
|
||||
# Test load_and_apply_theme
|
||||
print("\nTesting load_and_apply_theme...")
|
||||
try:
|
||||
# Create a minimal MainWindow instance
|
||||
# This will test if the refactored method is called
|
||||
import customtkinter as ctk
|
||||
ctk.CTk = MagicMock(return_value=MagicMock())
|
||||
|
||||
# The method should be called during __init__
|
||||
# Since we can't fully instantiate MainWindow, test the handler directly
|
||||
from gui.handlers.ui_helpers import UIHelpersHandler
|
||||
|
||||
mock_main_window = MagicMock()
|
||||
mock_main_window.root = MagicMock()
|
||||
mock_main_window.main_container = MagicMock()
|
||||
|
||||
handler = UIHelpersHandler(mock_main_window)
|
||||
handler.load_and_apply_theme()
|
||||
print("✅ load_and_apply_theme executed successfully")
|
||||
|
||||
# Test _show_scrollable_info
|
||||
print("\nTesting _show_scrollable_info...")
|
||||
handler._show_scrollable_info("Test Title", "Test Content")
|
||||
print("✅ _show_scrollable_info executed successfully")
|
||||
|
||||
# Test create_header
|
||||
print("\nTesting create_header...")
|
||||
handler.create_header()
|
||||
print("✅ create_header executed successfully")
|
||||
|
||||
# Test create_status_bar
|
||||
print("\nTesting create_status_bar...")
|
||||
handler.create_status_bar()
|
||||
print("✅ create_status_bar executed successfully")
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Error: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
def test_project_handler():
|
||||
"""Test project handler functionality"""
|
||||
print("\n=== Testing Project Handler ===")
|
||||
|
||||
from gui.handlers.project_manager import ProjectManagerHandler
|
||||
from project_manager import Project
|
||||
|
||||
mock_main_window = MagicMock()
|
||||
mock_main_window.project_manager = MagicMock()
|
||||
mock_main_window.refresh_projects = MagicMock()
|
||||
mock_main_window.update_status = MagicMock()
|
||||
|
||||
handler = ProjectManagerHandler(mock_main_window)
|
||||
|
||||
# Test delete_project
|
||||
print("\nTesting delete_project...")
|
||||
try:
|
||||
mock_project = MagicMock()
|
||||
mock_project.name = "Test Project"
|
||||
mock_project.id = "test-id"
|
||||
|
||||
# Mock the dialog to return False (no delete)
|
||||
with MagicMock() as mock_messagebox:
|
||||
mock_messagebox.askyesno.return_value = False
|
||||
handler.delete_project(mock_project)
|
||||
print("✅ delete_project executed (no delete)")
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Error: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
def test_process_handler():
|
||||
"""Test process handler functionality"""
|
||||
print("\n=== Testing Process Handler ===")
|
||||
|
||||
from gui.handlers.process_manager import ProcessManagerHandler
|
||||
|
||||
mock_main_window = MagicMock()
|
||||
mock_main_window.status_label = MagicMock()
|
||||
|
||||
handler = ProcessManagerHandler(mock_main_window)
|
||||
|
||||
# Test update_status
|
||||
print("\nTesting update_status...")
|
||||
try:
|
||||
handler.update_status("Test message", error=False)
|
||||
print("✅ update_status executed successfully")
|
||||
|
||||
handler.update_status("Error message", error=True)
|
||||
print("✅ update_status with error executed successfully")
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Error: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
# Note: download_log requires file dialog interaction, harder to test
|
||||
|
||||
def test_gitea_handler():
|
||||
"""Test Gitea handler functionality"""
|
||||
print("\n=== Testing Gitea Handler ===")
|
||||
|
||||
from gui.handlers.gitea_operations import GiteaOperationsHandler
|
||||
|
||||
mock_main_window = MagicMock()
|
||||
mock_main_window._show_scrollable_info = MagicMock()
|
||||
mock_repo_manager = MagicMock()
|
||||
mock_repo_manager.client = MagicMock()
|
||||
mock_repo_manager.git_ops = MagicMock()
|
||||
|
||||
mock_main_window.repo_manager = mock_repo_manager
|
||||
|
||||
handler = GiteaOperationsHandler(mock_main_window)
|
||||
|
||||
# Test consolidated test_gitea_connection
|
||||
print("\nTesting test_gitea_connection (consolidated)...")
|
||||
try:
|
||||
# Mock the API calls
|
||||
mock_repo_manager.client.get_user_info.return_value = {'username': 'testuser'}
|
||||
mock_repo_manager.client.get_user_orgs.return_value = []
|
||||
mock_repo_manager.client.get_user_teams.return_value = []
|
||||
mock_repo_manager.client.get_user_repos.return_value = []
|
||||
|
||||
handler.test_gitea_connection()
|
||||
print("✅ test_gitea_connection executed successfully (without project)")
|
||||
|
||||
# Test with project
|
||||
mock_project = MagicMock()
|
||||
mock_project.name = "Test Project"
|
||||
mock_project.path = "/test/path"
|
||||
|
||||
handler.test_gitea_connection(mock_project)
|
||||
print("✅ test_gitea_connection executed successfully (with project)")
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Error: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
def main():
|
||||
"""Run all tests"""
|
||||
print("=== Refactoring Test Suite ===")
|
||||
|
||||
# Show current configuration
|
||||
print("\nCurrent Configuration:")
|
||||
status = refactoring_config.get_status()
|
||||
for flag, value in status['flags'].items():
|
||||
if flag.startswith('USE_'):
|
||||
status_str = "✅ ENABLED" if value else "❌ DISABLED"
|
||||
print(f" {flag}: {status_str}")
|
||||
|
||||
# Run tests based on enabled features
|
||||
if status['flags']['USE_UI_HELPERS']:
|
||||
test_ui_helpers()
|
||||
else:
|
||||
print("\n⚠️ UI Helpers not enabled. Enable with:")
|
||||
print(" python3 manage_refactoring.py enable ui")
|
||||
|
||||
if status['flags']['USE_PROJECT_HANDLER']:
|
||||
test_project_handler()
|
||||
else:
|
||||
print("\n⚠️ Project Handler not enabled. Enable with:")
|
||||
print(" python3 manage_refactoring.py enable project")
|
||||
|
||||
if status['flags']['USE_PROCESS_HANDLER']:
|
||||
test_process_handler()
|
||||
else:
|
||||
print("\n⚠️ Process Handler not enabled. Enable with:")
|
||||
print(" python3 manage_refactoring.py enable process")
|
||||
|
||||
if status['flags']['USE_GITEA_HANDLER']:
|
||||
test_gitea_handler()
|
||||
else:
|
||||
print("\n⚠️ Gitea Handler not enabled. Enable with:")
|
||||
print(" python3 manage_refactoring.py enable gitea")
|
||||
|
||||
print("\n✅ Test completed")
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren