"""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