""" Modal System Test - Test-Funktionen für das Modal-System """ import logging import time from typing import Optional from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget from PyQt5.QtCore import QTimer from utils.modal_manager import ModalManager from views.widgets.progress_modal import ProgressModal from views.widgets.account_creation_modal import AccountCreationModal from views.widgets.login_process_modal import LoginProcessModal logger = logging.getLogger("modal_test") class ModalTestWindow(QMainWindow): """Test-Fenster für Modal-System Tests""" def __init__(self): super().__init__() self.setWindowTitle("AccountForger Modal System Test") self.setGeometry(100, 100, 600, 400) # Modal Manager self.modal_manager = ModalManager(parent_window=self) # Test UI self.setup_ui() def setup_ui(self): """Erstellt Test-UI""" central_widget = QWidget() self.setCentralWidget(central_widget) layout = QVBoxLayout(central_widget) # Test Buttons btn_account_creation = QPushButton("Test Account Creation Modal") btn_account_creation.clicked.connect(self.test_account_creation_modal) layout.addWidget(btn_account_creation) btn_login_process = QPushButton("Test Login Process Modal") btn_login_process.clicked.connect(self.test_login_process_modal) layout.addWidget(btn_login_process) btn_generic_modal = QPushButton("Test Generic Progress Modal") btn_generic_modal.clicked.connect(self.test_generic_modal) layout.addWidget(btn_generic_modal) btn_error_modal = QPushButton("Test Error Modal") btn_error_modal.clicked.connect(self.test_error_modal) layout.addWidget(btn_error_modal) btn_modal_manager = QPushButton("Test Modal Manager") btn_modal_manager.clicked.connect(self.test_modal_manager) layout.addWidget(btn_modal_manager) def test_account_creation_modal(self): """Testet Account Creation Modal""" logger.info("Testing Account Creation Modal") modal = AccountCreationModal(parent=self, platform="Instagram") # Steps setzen steps = [ "Browser wird vorbereitet", "Formular wird ausgefüllt", "Account wird erstellt", "E-Mail wird verifiziert" ] modal.set_steps(steps) # Modal anzeigen modal.show_platform_specific_process() # Simuliere Steps QTimer.singleShot(1000, lambda: modal.start_step("Browser wird vorbereitet")) QTimer.singleShot(2000, lambda: modal.complete_step("Browser wird vorbereitet", "Formular wird ausgefüllt")) QTimer.singleShot(3000, lambda: modal.start_step("Formular wird ausgefüllt")) QTimer.singleShot(4000, lambda: modal.complete_step("Formular wird ausgefüllt", "Account wird erstellt")) QTimer.singleShot(5000, lambda: modal.start_step("Account wird erstellt")) QTimer.singleShot(6000, lambda: modal.complete_step("Account wird erstellt", "E-Mail wird verifiziert")) QTimer.singleShot(7000, lambda: modal.start_step("E-Mail wird verifiziert")) QTimer.singleShot(8000, lambda: modal.show_success({"username": "test_user", "platform": "Instagram"})) def test_login_process_modal(self): """Testet Login Process Modal""" logger.info("Testing Login Process Modal") modal = LoginProcessModal(parent=self, platform="TikTok") # Session Login testen modal.show_session_login("test_account", "TikTok") # Simuliere Login-Prozess QTimer.singleShot(1000, lambda: modal.update_login_progress("browser_init", "Browser wird gestartet")) QTimer.singleShot(2000, lambda: modal.update_login_progress("session_restore", "Session wird wiederhergestellt")) QTimer.singleShot(3000, lambda: modal.update_login_progress("verification", "Login wird geprüft")) QTimer.singleShot(4000, lambda: modal.show_session_restored()) def test_generic_modal(self): """Testet Generic Progress Modal""" logger.info("Testing Generic Progress Modal") modal = ProgressModal(parent=self, modal_type="verification") modal.show_process() # Simuliere Updates QTimer.singleShot(1000, lambda: modal.update_status("Verbindung wird hergestellt...", "Server wird kontaktiert")) QTimer.singleShot(2000, lambda: modal.update_status("Daten werden verarbeitet...", "Bitte warten")) QTimer.singleShot(3000, lambda: modal.update_status("✅ Vorgang abgeschlossen!", "Erfolgreich")) QTimer.singleShot(4000, lambda: modal.hide_process()) def test_error_modal(self): """Testet Error Modal""" logger.info("Testing Error Modal") modal = ProgressModal(parent=self, modal_type="generic") modal.show_process() # Nach kurzer Zeit Fehler anzeigen QTimer.singleShot(1500, lambda: modal.show_error("Netzwerkfehler aufgetreten", auto_close_seconds=3)) def test_modal_manager(self): """Testet Modal Manager""" logger.info("Testing Modal Manager") # Zeige Account Creation Modal über Manager self.modal_manager.show_modal( 'account_creation', title="🔄 Test Account wird erstellt", status="Modal Manager Test läuft...", detail="Über ModalManager aufgerufen" ) # Simuliere Updates über Manager QTimer.singleShot(1000, lambda: self.modal_manager.update_modal_status( 'account_creation', "Browser wird initialisiert...", "Schritt 1 von 3" )) QTimer.singleShot(2000, lambda: self.modal_manager.update_modal_status( 'account_creation', "Formular wird ausgefüllt...", "Schritt 2 von 3" )) QTimer.singleShot(3000, lambda: self.modal_manager.update_modal_status( 'account_creation', "Account wird finalisiert...", "Schritt 3 von 3" )) QTimer.singleShot(4000, lambda: self.modal_manager.update_modal_status( 'account_creation', "✅ Account erfolgreich erstellt!", "Test abgeschlossen" )) QTimer.singleShot(5000, lambda: self.modal_manager.hide_modal('account_creation')) def run_modal_test(): """Führt den Modal-Test aus""" import sys # QApplication erstellen falls nicht vorhanden app = QApplication.instance() if app is None: app = QApplication(sys.argv) # Test-Fenster erstellen test_window = ModalTestWindow() test_window.show() # App ausführen if hasattr(app, 'exec'): return app.exec() else: return app.exec_() if __name__ == "__main__": # Logging konfigurieren logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) # Test ausführen run_modal_test()