from zotero_kb.api import create_app from zotero_kb.config import AppConfig def _get_index_html(tmp_path) -> str: app = create_app( AppConfig( workspace_dir=tmp_path / "workspace", zotero_data_dir=tmp_path / "zotero", bridge_file=tmp_path / "bridge.json", ) ) for route in app.routes: if getattr(route, "path", None) == "/" and "GET" in getattr(route, "methods", set()): return route.endpoint() raise AssertionError("GET / route not found") def test_index_contains_base_page_forms(tmp_path) -> None: html = _get_index_html(tmp_path) assert 'id="create-project-form"' in html assert 'id="recommend-form"' in html assert 'id="plan-form"' in html def test_index_contains_import_window_controls(tmp_path) -> None: html = _get_index_html(tmp_path) assert 'id="open-import-modal-button"' in html assert 'id="import-window-shell"' in html assert 'id="window-minimize-button"' in html assert 'id="window-maximize-button"' in html assert 'id="window-close-button"' in html assert 'id="window-restore-button"' in html assert 'id="import-window-minimized-bar"' in html assert 'id="window-project-label"' in html assert 'id="window-collection-tree"' in html assert 'id="window-collection-items"' in html assert 'id="window-selected-count"' in html assert 'id="window-clear-selection-button"' in html assert 'id="window-import-selected-items-button"' in html assert 'id="item-preview-popover"' in html assert 'isImportWindowOpen: false' in html assert "function openImportWindow()" in html assert "function closeImportWindow()" in html assert "function updateImportActionState()" in html assert 'document.body.classList.toggle("modal-open"' in html def test_index_window_frame_css(tmp_path) -> None: html = _get_index_html(tmp_path) assert ".window-frame" in html assert ".window-shell" in html assert ".window-toolbar" in html assert ".window-body" in html assert ".window-minimized-bar" in html assert '"zotero-kb.import-window"' in html assert "startWindowDrag" in html assert "minimizeWindow" in html assert "maximizeWindow" in html assert "restoreWindow" in html assert "initWindowFromSession" in html assert "persistWindowSessionState" in html