52 lines
2.0 KiB
Python
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()
|