Files
ai-contract-platform/backend/tests/test_governance_models.py
T
2026-05-02 21:48:26 +08:00

52 lines
2.0 KiB
Python

import unittest
from sqlalchemy import create_engine, inspect
from app.db import Base
import app.models # noqa: F401
class GovernanceModelsTestCase(unittest.TestCase):
def setUp(self):
self.engine = create_engine("sqlite+pysqlite:///:memory:", future=True)
Base.metadata.create_all(self.engine)
self.inspector = inspect(self.engine)
def tearDown(self):
self.engine.dispose()
def test_governance_tables_are_registered(self):
table_names = set(self.inspector.get_table_names())
self.assertTrue(
{
"governance_assets",
"governance_review_assignments",
"governance_review_decisions",
"governance_evidences",
"governance_release_batches",
"governance_gate_runs",
}.issubset(table_names)
)
def test_governance_assets_has_unique_identity_constraint(self):
unique_constraints = self.inspector.get_unique_constraints("governance_assets")
constraint_names = {item["name"] for item in unique_constraints}
self.assertIn("uq_governance_assets_identity", constraint_names)
def test_governance_tables_have_expected_foreign_keys(self):
assignment_foreign_keys = self.inspector.get_foreign_keys("governance_review_assignments")
decision_foreign_keys = self.inspector.get_foreign_keys("governance_review_decisions")
evidence_foreign_keys = self.inspector.get_foreign_keys("governance_evidences")
gate_run_foreign_keys = self.inspector.get_foreign_keys("governance_gate_runs")
self.assertIn("governance_assets", {fk["referred_table"] for fk in assignment_foreign_keys})
self.assertIn("governance_review_assignments", {fk["referred_table"] for fk in decision_foreign_keys})
self.assertIn("files", {fk["referred_table"] for fk in evidence_foreign_keys})
self.assertIn("governance_release_batches", {fk["referred_table"] for fk in gate_run_foreign_keys})
if __name__ == "__main__":
unittest.main()