You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
3.4 KiB
Python
62 lines
3.4 KiB
Python
import unittest
|
|
|
|
from admin_app.db.models import ToolArtifact
|
|
from admin_app.db.models.tool_artifact import (
|
|
ToolArtifactKind,
|
|
ToolArtifactStage,
|
|
ToolArtifactStatus,
|
|
ToolArtifactStorageKind,
|
|
)
|
|
|
|
|
|
class ToolArtifactModelTests(unittest.TestCase):
|
|
def test_tool_artifact_declares_expected_table_and_columns(self):
|
|
self.assertEqual(ToolArtifact.__tablename__, "tool_artifacts")
|
|
self.assertIn("artifact_id", ToolArtifact.__table__.columns)
|
|
self.assertIn("draft_id", ToolArtifact.__table__.columns)
|
|
self.assertIn("tool_version_id", ToolArtifact.__table__.columns)
|
|
self.assertIn("tool_name", ToolArtifact.__table__.columns)
|
|
self.assertIn("version_number", ToolArtifact.__table__.columns)
|
|
self.assertIn("artifact_stage", ToolArtifact.__table__.columns)
|
|
self.assertIn("artifact_kind", ToolArtifact.__table__.columns)
|
|
self.assertIn("artifact_status", ToolArtifact.__table__.columns)
|
|
self.assertIn("storage_kind", ToolArtifact.__table__.columns)
|
|
self.assertIn("summary", ToolArtifact.__table__.columns)
|
|
self.assertIn("payload_json", ToolArtifact.__table__.columns)
|
|
self.assertIn("checksum", ToolArtifact.__table__.columns)
|
|
self.assertIn("author_staff_account_id", ToolArtifact.__table__.columns)
|
|
self.assertIn("author_display_name", ToolArtifact.__table__.columns)
|
|
|
|
def test_tool_artifact_uses_expected_constraints_and_defaults(self):
|
|
draft_foreign_keys = list(ToolArtifact.__table__.columns["draft_id"].foreign_keys)
|
|
self.assertEqual(len(draft_foreign_keys), 1)
|
|
self.assertEqual(str(draft_foreign_keys[0].target_fullname), "tool_drafts.id")
|
|
|
|
version_foreign_keys = list(ToolArtifact.__table__.columns["tool_version_id"].foreign_keys)
|
|
self.assertEqual(len(version_foreign_keys), 1)
|
|
self.assertEqual(str(version_foreign_keys[0].target_fullname), "tool_versions.id")
|
|
|
|
author_foreign_keys = list(ToolArtifact.__table__.columns["author_staff_account_id"].foreign_keys)
|
|
self.assertEqual(len(author_foreign_keys), 1)
|
|
self.assertEqual(str(author_foreign_keys[0].target_fullname), "staff_accounts.id")
|
|
|
|
status_column = ToolArtifact.__table__.columns["artifact_status"]
|
|
self.assertEqual(status_column.default.arg, ToolArtifactStatus.PENDING)
|
|
self.assertEqual(status_column.type.process_bind_param("succeeded", None), "succeeded")
|
|
self.assertEqual(status_column.type.process_result_value("pending", None), ToolArtifactStatus.PENDING)
|
|
|
|
stage_column = ToolArtifact.__table__.columns["artifact_stage"]
|
|
kind_column = ToolArtifact.__table__.columns["artifact_kind"]
|
|
storage_column = ToolArtifact.__table__.columns["storage_kind"]
|
|
self.assertEqual(stage_column.type.process_bind_param("validation", None), "validation")
|
|
self.assertEqual(kind_column.type.process_result_value("generation_request", None), ToolArtifactKind.GENERATION_REQUEST)
|
|
self.assertEqual(storage_column.default.arg, ToolArtifactStorageKind.INLINE_JSON)
|
|
self.assertEqual(storage_column.type.process_result_value("inline_json", None), ToolArtifactStorageKind.INLINE_JSON)
|
|
|
|
unique_constraints = {constraint.name for constraint in ToolArtifact.__table__.constraints}
|
|
self.assertIn("uq_tool_artifacts_tool_version_kind", unique_constraints)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|