Files
hermes-webui/tests/test_session_metadata_fast_path.py
T
2026-05-07 02:52:01 +00:00

52 lines
1.9 KiB
Python

import re
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
def test_messages_zero_skips_effective_model_resolution():
src = (ROOT / "api" / "routes.py").read_text(encoding="utf-8")
assert re.search(
r"effective_model\s*=\s*\(\s*"
r"_resolve_effective_session_model_for_display\(s\)\s*"
r"if resolve_model\s*else None\s*\)",
src,
), "messages=0 metadata requests must not resolve the model catalog"
assert 'resolve_model_default = "1" if load_messages else "0"' in src
def test_full_message_load_updates_viewed_count_after_metadata_fast_path():
src = (ROOT / "static" / "sessions.js").read_text(encoding="utf-8")
assert "_setSessionViewedCount(S.session.session_id, Number(data.session.message_count || 0));" in src
assert "_setSessionViewedCount(sid, Number(S.session.message_count || msgs.length));" in src
def test_lazy_message_load_skips_model_resolution():
src = (ROOT / "static" / "sessions.js").read_text(encoding="utf-8")
assert "messages=1&resolve_model=0" in src
def test_session_switch_defers_model_resolution_without_blocking():
src = (ROOT / "static" / "sessions.js").read_text(encoding="utf-8")
ui = (ROOT / "static" / "ui.js").read_text(encoding="utf-8")
assert "messages=0&resolve_model=0" in src
assert "function _resolveSessionModelForDisplaySoon" in src
assert "messages=0&resolve_model=1" in src
assert "_modelResolutionDeferred=true" in src
assert "deferModelCorrection" in ui
assert "if(fallback&&!deferModelCorrection)" in ui
def test_boot_does_not_block_session_restore_on_model_catalog():
src = (ROOT / "static" / "boot.js").read_text(encoding="utf-8")
assert "if(s.default_model) window._defaultModel=s.default_model;" in src
assert "const _modelDropdownReady=populateModelDropdown().then" in src
assert "window._modelDropdownReady=_modelDropdownReady" in src
assert "await populateModelDropdown()" not in src