feat: honor temporal read context
This commit is contained in:
+37
-1
@@ -15,8 +15,18 @@ from govoplan_core.core.institutional import (
|
||||
ProcedureParty,
|
||||
TemporalRevision,
|
||||
)
|
||||
from govoplan_core.core.temporal import (
|
||||
TemporalDataContext,
|
||||
bind_temporal_data_context,
|
||||
reset_temporal_data_context,
|
||||
)
|
||||
from govoplan_parties.backend.db.models import ProcedurePartyRevision
|
||||
from govoplan_parties.backend.service import PartyStoreError, SqlPartyResolver, record_procedure_party
|
||||
from govoplan_parties.backend.service import (
|
||||
PartyStoreError,
|
||||
SqlPartyResolver,
|
||||
get_procedure_party,
|
||||
record_procedure_party,
|
||||
)
|
||||
|
||||
|
||||
NOW = datetime(2026, 8, 1, 11, 0, tzinfo=UTC)
|
||||
@@ -87,6 +97,32 @@ class PartyTests(unittest.TestCase):
|
||||
with self.assertRaisesRegex(Exception, "same-tenant"):
|
||||
SqlPartyResolver().list_procedure_parties(self.session, Principal("tenant-2"), procedure_ref=ref("case", "case-1", "cases"))
|
||||
|
||||
def test_read_context_can_reconstruct_recorded_state(self) -> None:
|
||||
record_procedure_party(self.session, self.principal, party=party())
|
||||
revoked = representation(revision="2", revoked_at=NOW + timedelta(hours=1))
|
||||
record_procedure_party(
|
||||
self.session,
|
||||
self.principal,
|
||||
party=party(revision="2", representations=(revoked,)),
|
||||
expected_revision="1",
|
||||
)
|
||||
token = bind_temporal_data_context(
|
||||
TemporalDataContext(
|
||||
validity_mode="at",
|
||||
valid_at=NOW + timedelta(hours=1),
|
||||
recorded_at=NOW + timedelta(seconds=30),
|
||||
)
|
||||
)
|
||||
try:
|
||||
result = get_procedure_party(
|
||||
self.session,
|
||||
self.principal,
|
||||
party_id="representative",
|
||||
)
|
||||
self.assertEqual("1", result.temporal.revision if result else None)
|
||||
finally:
|
||||
reset_temporal_data_context(token)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user