""" Tests fuer das BreakPilot Studio Modular Frontend Testet die modulare Frontend-Architektur mit: - BaseLayoutModule - DashboardModule - JitsiModule - LettersModule - WorksheetsModule - CorrectionModule Erstellt: 2024-12-18 """ import pytest import re import sys import os # Add parent directory to path for imports sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) class TestModuleImports: """Tests fuer die Module-Imports.""" def test_all_modules_importable(self): """Testet, dass alle Module importiert werden koennen.""" from frontend.modules import ( BaseLayoutModule, DashboardModule, JitsiModule, LettersModule, WorksheetsModule, CorrectionModule, ) assert BaseLayoutModule is not None assert DashboardModule is not None assert JitsiModule is not None assert LettersModule is not None assert WorksheetsModule is not None assert CorrectionModule is not None def test_studio_modular_importable(self): """Testet, dass studio_modular importiert werden kann.""" from frontend.studio_modular import get_studio_html assert callable(get_studio_html) class TestDashboardModule: """Tests fuer das DashboardModule.""" @pytest.fixture def dashboard_module(self): from frontend.modules.dashboard import DashboardModule return DashboardModule def test_dashboard_has_get_css(self, dashboard_module): """Testet, dass DashboardModule.get_css() existiert.""" css = dashboard_module.get_css() assert isinstance(css, str) assert len(css) > 0 def test_dashboard_has_get_html(self, dashboard_module): """Testet, dass DashboardModule.get_html() existiert.""" html = dashboard_module.get_html() assert isinstance(html, str) assert len(html) > 0 def test_dashboard_has_get_js(self, dashboard_module): """Testet, dass DashboardModule.get_js() existiert.""" js = dashboard_module.get_js() assert isinstance(js, str) assert len(js) > 0 def test_dashboard_panel_id_in_html(self, dashboard_module): """Testet, dass panel-dashboard in HTML vorhanden ist.""" html = dashboard_module.get_html() assert 'id="panel-dashboard"' in html, \ "Dashboard HTML muss panel-dashboard ID haben" def test_dashboard_css_has_panel_styles(self, dashboard_module): """Testet, dass CSS fuer .panel-dashboard vorhanden ist.""" css = dashboard_module.get_css() assert '.panel-dashboard' in css, \ "Dashboard CSS muss .panel-dashboard Styles haben" def test_dashboard_has_module_cards(self, dashboard_module): """Testet, dass Dashboard Modul-Kacheln hat.""" html = dashboard_module.get_html() assert 'dashboard-card' in html, \ "Dashboard muss Modul-Kacheln haben" def test_dashboard_has_all_module_links(self, dashboard_module): """Testet, dass Dashboard Links zu allen Modulen hat.""" html = dashboard_module.get_html() expected_modules = ['worksheets', 'correction', 'jitsi', 'letters', 'messenger'] for module in expected_modules: assert f"loadModule('{module}')" in html, \ f"Dashboard muss Link zu {module} Modul haben" def test_dashboard_js_has_load_function(self, dashboard_module): """Testet, dass Dashboard JS eine Load-Funktion hat.""" js = dashboard_module.get_js() assert 'function loadDashboardModule' in js, \ "Dashboard JS muss loadDashboardModule Funktion haben" class TestBaseLayoutModule: """Tests fuer das BaseLayoutModule.""" @pytest.fixture def base_module(self): from frontend.modules.base import BaseLayoutModule return BaseLayoutModule def test_base_has_sidebar(self, base_module): """Testet, dass Base HTML eine Sidebar hat.""" html = base_module.get_html() assert '