Files
odysseus/tests/test_editor_persistence_session.py
T

26 lines
1.1 KiB
Python

from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
def test_persistence_snapshots_metadata_and_guards_late_callbacks():
source = (ROOT / "static/js/galleryEditor.js").read_text()
persist = source[source.index("async function _persistDraft"):source.index("async function _loadDraftById")]
assert "const sessionToken = state.editorSessionToken;" in persist
assert "const draftIdAtStart = state.draftId || null;" in persist
assert "const draftNameAtStart = state.draftName || 'Untitled';" in persist
assert "const isCurrentSession = () => state.editorOpen && state.editorSessionToken === sessionToken;" in persist
assert "if (!isCurrentSession()) return;" in persist
assert "state.draftId = out.id;" in persist
def test_new_editor_invalidates_previous_persistence_lane():
state = (ROOT / "static/js/editor/state.js").read_text()
editor = (ROOT / "static/js/galleryEditor.js").read_text()
assert "editorSessionToken: 0" in state
assert "state.editorSessionToken += 1;" in editor
assert "state.persistInFlight = null;" in editor