feat: sync latest ARR implementation
This commit is contained in:
34
tests/test_artifact_object_identity_migration.py
Normal file
34
tests/test_artifact_object_identity_migration.py
Normal file
@@ -0,0 +1,34 @@
|
||||
from pathlib import Path
|
||||
import unittest
|
||||
|
||||
|
||||
PROJECT_ROOT = Path(__file__).resolve().parents[1]
|
||||
UP_PATH = PROJECT_ROOT / "database" / "011_artifact_object_identity.sql"
|
||||
DOWN_PATH = PROJECT_ROOT / "database" / "011_artifact_object_identity.down.sql"
|
||||
|
||||
|
||||
class ArtifactObjectIdentityMigrationTests(unittest.TestCase):
|
||||
def test_forward_migration_replaces_content_uniqueness_with_lookup_index(self) -> None:
|
||||
sql = UP_PATH.read_text(encoding="utf-8")
|
||||
|
||||
self.assertIn("current_database() <> 'booking_test'", sql)
|
||||
self.assertIn("DROP CONSTRAINT artifacts_kind_hash_unique", sql)
|
||||
self.assertIn("CREATE INDEX artifacts_kind_hash_idx", sql)
|
||||
self.assertNotIn("CREATE UNIQUE INDEX artifacts_kind_hash_idx", sql)
|
||||
self.assertNotIn("DROP SCHEMA", sql)
|
||||
|
||||
def test_rollback_refuses_after_repeated_content_is_registered(self) -> None:
|
||||
sql = DOWN_PATH.read_text(encoding="utf-8")
|
||||
|
||||
self.assertIn("current_database() <> 'booking_test'", sql)
|
||||
self.assertIn("GROUP BY artifact_kind, sha256", sql)
|
||||
self.assertIn("HAVING count(*) > 1", sql)
|
||||
self.assertIn(
|
||||
"refusing rollback: repeated artifact content exists across storage identities",
|
||||
sql,
|
||||
)
|
||||
self.assertIn("ADD CONSTRAINT artifacts_kind_hash_unique", sql)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user