from pathlib import Path import re ROOT = Path(__file__).resolve().parents[1] CONFIG_PY = (ROOT / "api" / "config.py").read_text(encoding="utf-8") BOOT_JS = (ROOT / "static" / "boot.js").read_text(encoding="utf-8") INDEX_HTML = (ROOT / "static" / "index.html").read_text(encoding="utf-8") PANELS_JS = (ROOT / "static" / "panels.js").read_text(encoding="utf-8") UI_JS = (ROOT / "static" / "ui.js").read_text(encoding="utf-8") I18N_JS = (ROOT / "static" / "i18n.js").read_text(encoding="utf-8") def test_endless_scroll_is_opt_in_setting(): assert '"session_endless_scroll": False' in CONFIG_PY assert '"session_endless_scroll"' in CONFIG_PY assert 'id="settingsSessionEndlessScroll"' in INDEX_HTML assert 'data-i18n="settings_label_session_endless_scroll"' in INDEX_HTML assert 'data-i18n="settings_desc_session_endless_scroll"' in INDEX_HTML assert "session_endless_scroll: !!($('settingsSessionEndlessScroll')||{}).checked" in PANELS_JS assert "window._sessionEndlessScrollEnabled=!!s.session_endless_scroll" in BOOT_JS assert "window._sessionEndlessScrollEnabled=false" in BOOT_JS def test_endless_scroll_setting_has_its_own_label(): match = re.search( r"]*>\s*" r']*>\s*' r'[^<]+\s*' r"\s*" r']*data-i18n="settings_desc_session_endless_scroll"', INDEX_HTML, ) assert match, "endless-scroll checkbox must be wrapped by its own label before its description" def test_session_jump_and_endless_scroll_labels_are_separate(): jump_label_end = INDEX_HTML.index('data-i18n="settings_desc_session_jump_buttons"') endless_label_start = INDEX_HTML.index('id="settingsSessionEndlessScroll"') between = INDEX_HTML[jump_label_end:endless_label_start] assert "