Files
odysseus/tests/test_document_active_restore.py
T

53 lines
2.0 KiB
Python

"""Regression guards for restoring a chat's exact active document."""
from pathlib import Path
DOC_JS = (
Path(__file__).resolve().parents[1] / "static/js/document.js"
).read_text(encoding="utf-8")
def test_active_document_is_persisted_per_session():
assert "const _docActiveKey = (sessionId) => 'odysseus-doc-active-' + sessionId;" in DOC_JS
assert "localStorage.setItem(_docActiveKey(sessionId), docId);" in DOC_JS
assert "_rememberActiveDoc(docId);" in DOC_JS
def test_session_restore_prefers_exact_remembered_document():
assert "const rememberedDocId = localStorage.getItem(_docActiveKey(sessionId));" in DOC_JS
assert "activeDocs.find(doc => doc.id === rememberedDocId) || activeDocs[0]" in DOC_JS
def test_session_restore_rehydrates_existing_tab_content_without_http_cache():
assert "cache: 'no-store'" in DOC_JS
assert "for (const doc of activeDocs)" in DOC_JS
assert "addDocToTabs(doc, sessionId);" in DOC_JS
restore_loop = DOC_JS.split("for (const doc of activeDocs)", 1)[1].split("_syncDocIndicator", 1)[0]
assert "if (!docs.has(doc.id))" not in restore_loop
def test_closing_active_document_clears_stale_restore_pointer():
assert "_forgetActiveDoc(doc?.sessionId || _lastSessionId, docId);" in DOC_JS
def test_explicit_document_open_clears_minimized_dock_state():
ensure_mounted = DOC_JS.split("function _ensureDocPaneMounted()", 1)[1].split(
"export async function loadDocument", 1
)[0]
assert "Modals.isMinimized('doc-panel')" in ensure_mounted
assert "Modals.unregister('doc-panel');" in ensure_mounted
assert "_markDocVisibleState(_lastSessionId, 'open');" in ensure_mounted
def test_library_open_intent_is_persisted_before_delayed_session_restore():
body = DOC_JS.split("export function prepareDocumentOpen(sessionId)", 1)[1].split(
"/** Switch chat", 1
)[0]
assert "_markDocVisibleState(sessionId, 'open');" in body
assert "Modals.isMinimized('doc-panel')" in body
assert "Modals.unregister('doc-panel');" in body
assert "prepareDocumentOpen," in DOC_JS