Implement tab-scoped runs pagination state
This commit is contained in:
parent
dce67ea9e3
commit
c834c3c254
6 changed files with 444 additions and 62 deletions
41
tests/test_tab_state.py
Normal file
41
tests/test_tab_state.py
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from datetime import UTC, datetime, timedelta
|
||||
|
||||
from repub.datastar import TabStateStore
|
||||
|
||||
|
||||
def test_tab_state_store_tracks_page_state_per_tab_and_connection_count() -> None:
|
||||
store = TabStateStore()
|
||||
|
||||
store.connect("tab-1")
|
||||
store.connect("tab-1")
|
||||
store.update_page_state(
|
||||
"tab-1",
|
||||
"runs",
|
||||
lambda state: {**state, "completed_page": 2},
|
||||
)
|
||||
|
||||
assert store.get_tab_state("tab-1") == {"runs": {"completed_page": 2}}
|
||||
|
||||
store.disconnect("tab-1")
|
||||
|
||||
assert store.get_tab_state("tab-1") == {"runs": {"completed_page": 2}}
|
||||
|
||||
store.disconnect("tab-1")
|
||||
|
||||
assert store.get_tab_state("tab-1") is None
|
||||
|
||||
|
||||
def test_tab_state_store_cleans_only_stale_disconnected_tabs() -> None:
|
||||
store = TabStateStore(clean_age_threshold=timedelta(hours=24))
|
||||
now = datetime(2026, 3, 31, 12, 0, tzinfo=UTC)
|
||||
|
||||
store.connect("stale-tab", now=now - timedelta(days=2))
|
||||
store.connect("fresh-tab", now=now)
|
||||
|
||||
removed = store.cleanup_stale(now=now)
|
||||
|
||||
assert removed == {"stale-tab"}
|
||||
assert store.get_tab_state("stale-tab") is None
|
||||
assert store.get_tab_state("fresh-tab") == {}
|
||||
Loading…
Add table
Add a link
Reference in a new issue