from __future__ import annotations from datetime import UTC, datetime import unittest from govoplan_core.core.records import ( RecordContractError, RecordFilingRequest, RecordSourceLocator, RecordSourceReference, record_source_capabilities, record_source_capability, ) class _Registry: def capability_names(self) -> tuple[str, ...]: return ("mail.delivery", "records.source.cases", "records.source.files") class RecordsContractTests(unittest.TestCase): def test_exact_source_and_filing_request_are_tenant_bound(self) -> None: locator = RecordSourceLocator( tenant_id="tenant-1", source_module="files", resource_type="file_version", resource_id="asset-1", source_revision="version-7", ) reference = RecordSourceReference( locator=locator, label="Evidence.pdf", content_sha256="a" * 64, size_bytes=12, recorded_at=datetime(2026, 8, 6, tzinfo=UTC), ) request = RecordFilingRequest( tenant_id="tenant-1", record_id="record-1", source=locator, purpose="process application", filing_reason="Evidence received with the application.", idempotency_key="filing-1", ) self.assertEqual("version-7", reference.locator.source_revision) self.assertEqual("record-1", request.record_id) def test_cross_tenant_filing_and_inexact_sources_are_rejected(self) -> None: with self.assertRaisesRegex(RecordContractError, "source_revision"): RecordSourceLocator( tenant_id="tenant-1", source_module="files", resource_type="file_version", resource_id="asset-1", source_revision="", ) locator = RecordSourceLocator( tenant_id="tenant-1", source_module="cases", resource_type="case_revision", resource_id="case-1", source_revision="4", ) with self.assertRaisesRegex(RecordContractError, "cross tenants"): RecordFilingRequest( tenant_id="tenant-2", record_id="record-1", source=locator, purpose="audit", filing_reason="Preserve the decision basis.", idempotency_key="filing-2", ) def test_source_capabilities_are_discoverable_without_module_imports(self) -> None: self.assertEqual("records.source.files", record_source_capability("files")) self.assertEqual( "records.source.forms_runtime", record_source_capability("forms_runtime"), ) self.assertEqual( ("records.source.cases", "records.source.files"), record_source_capabilities(_Registry()), ) if __name__ == "__main__": unittest.main()