77 lines
2.1 KiB
Python
77 lines
2.1 KiB
Python
"""Store.docket_* — persistence for bib.dockets.Docket."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from bib.dockets import Docket
|
|
from bib.store import Store
|
|
|
|
|
|
def _store() -> Store:
|
|
return Store(":memory:", storage_dir="/tmp/nope")
|
|
|
|
|
|
def test_table_exists_after_init():
|
|
s = _store()
|
|
names = {
|
|
r[0]
|
|
for r in s._con().execute("SELECT name FROM sqlite_master WHERE type='table'")
|
|
}
|
|
assert "dockets" in names
|
|
idx = {
|
|
r[0]
|
|
for r in s._con().execute("SELECT name FROM sqlite_master WHERE type='index'")
|
|
}
|
|
assert "idx_items_url" in idx
|
|
|
|
|
|
def test_upsert_then_get_roundtrip():
|
|
s = _store()
|
|
d = Docket(
|
|
id="CMS-2026-2377",
|
|
rule_cms_id="CMS-1848-P",
|
|
fr_object_id="obj",
|
|
comment_end_date="2026-09-14",
|
|
)
|
|
s.docket_upsert(d)
|
|
got = s.docket_get("CMS-2026-2377")
|
|
assert got == d
|
|
assert s.docket_get("CMS-0000-0000") is None
|
|
|
|
|
|
def test_upsert_replaces_fields():
|
|
s = _store()
|
|
s.docket_upsert(Docket(id="D1", pull_watermark="a"))
|
|
s.docket_upsert(Docket(id="D1", pull_watermark="b", last_pull_new=4))
|
|
got = s.docket_get("D1")
|
|
assert got.pull_watermark == "b"
|
|
assert got.last_pull_new == 4
|
|
|
|
|
|
def test_docket_for_rule():
|
|
s = _store()
|
|
s.docket_upsert(Docket(id="D1", rule_cms_id="CMS-1848-P"))
|
|
assert s.docket_for_rule("CMS-1848-P").id == "D1"
|
|
assert s.docket_for_rule("CMS-9999-P") is None
|
|
|
|
|
|
def test_seal_unseal_and_sealed_dockets():
|
|
s = _store()
|
|
s.docket_upsert(Docket(id="D1"))
|
|
s.docket_upsert(Docket(id="D2"))
|
|
s.docket_seal("D1", reason="manual", counts={"comments": 3})
|
|
d1 = s.docket_get("D1")
|
|
assert d1.sealed and d1.seal_reason == "manual"
|
|
assert '"comments": 3' in d1.counts_json
|
|
assert set(s.sealed_dockets()) == {"D1"}
|
|
assert s.sealed_dockets()["D1"] == d1.sealed_at
|
|
s.docket_unseal("D1")
|
|
assert not s.docket_get("D1").sealed
|
|
assert s.sealed_dockets() == {}
|
|
|
|
|
|
def test_dockets_lists_sorted_by_id():
|
|
s = _store()
|
|
s.docket_upsert(Docket(id="CMS-2019-0111"))
|
|
s.docket_upsert(Docket(id="CMS-2017-0092"))
|
|
assert [d.id for d in s.dockets()] == ["CMS-2017-0092", "CMS-2019-0111"]
|