79 lines
2.6 KiB
Python
79 lines
2.6 KiB
Python
"""Import and identity tests for the route_session_list_cache extraction."""
|
|
|
|
|
|
def test_route_session_list_cache_exports():
|
|
from api import route_session_list_cache as slc
|
|
|
|
assert hasattr(slc, "_SESSIONS_CACHE")
|
|
assert hasattr(slc, "_session_list_cache_key")
|
|
assert callable(slc._session_list_cache_overlay_runtime_rows)
|
|
assert callable(slc._session_list_cache_source_stamp)
|
|
|
|
|
|
def test_backward_compat_from_routes():
|
|
from api import route_session_list_cache as slc
|
|
import api.routes as routes
|
|
|
|
assert hasattr(routes, "_session_list_cache_key")
|
|
assert hasattr(routes, "_session_list_cache_state_db_fingerprint")
|
|
assert callable(routes._session_list_cache_done)
|
|
assert slc._session_list_cache_done is routes._session_list_cache_done
|
|
|
|
|
|
def test_shared_cache_objects():
|
|
from api import route_session_list_cache as slc
|
|
import api.routes as routes
|
|
|
|
assert slc._SESSIONS_CACHE is routes._SESSIONS_CACHE
|
|
assert slc._SESSIONS_CACHE_INFLIGHT is routes._SESSIONS_CACHE_INFLIGHT
|
|
assert slc._SESSIONS_CACHE_LOCK is routes._SESSIONS_CACHE_LOCK
|
|
|
|
|
|
def test_shared_cache_state_mutation():
|
|
from api import route_session_list_cache as slc
|
|
import api.routes as routes
|
|
|
|
key = routes._session_list_cache_key(
|
|
active_profile="default",
|
|
all_profiles=False,
|
|
show_cli_sessions=False,
|
|
show_previous_messaging_sessions=False,
|
|
show_cron_sessions=False,
|
|
)
|
|
payload = {"sessions": []}
|
|
routes._session_list_cache_clear()
|
|
routes._session_list_cache_set(key, payload)
|
|
try:
|
|
shared_payload, _fresh = slc._session_list_cache_get(key, allow_stale=True)
|
|
assert shared_payload == payload
|
|
assert _fresh in (False, True)
|
|
finally:
|
|
routes._session_list_cache_clear()
|
|
|
|
|
|
def test_live_scalar_exports_follow_route_session_list_cache_state():
|
|
from api import route_session_list_cache as slc
|
|
import api.routes as routes
|
|
|
|
before = routes._SESSIONS_CACHE_GLOBAL_INVALIDATION_VERSION
|
|
routes._session_list_cache_clear()
|
|
after = routes._SESSIONS_CACHE_GLOBAL_INVALIDATION_VERSION
|
|
|
|
assert after == slc._SESSIONS_CACHE_GLOBAL_INVALIDATION_VERSION
|
|
assert after == before + 1
|
|
|
|
|
|
def test_no_circular_import():
|
|
import pathlib
|
|
|
|
src = (
|
|
pathlib.Path(__file__).parent.parent
|
|
/ "api"
|
|
/ "route_session_list_cache.py"
|
|
).read_text()
|
|
for line in src.splitlines():
|
|
if line.startswith("from api.routes import") or line.startswith("import api.routes"):
|
|
raise AssertionError(
|
|
"route_session_list_cache must not import api.routes at module scope"
|
|
)
|