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.
44 lines
2.3 KiB
Python
44 lines
2.3 KiB
Python
import unittest
|
|
|
|
from admin_app.db.models import ToolDraft
|
|
from shared.contracts import ToolLifecycleStatus
|
|
|
|
|
|
class ToolDraftModelTests(unittest.TestCase):
|
|
def test_tool_draft_declares_expected_table_and_columns(self):
|
|
self.assertEqual(ToolDraft.__tablename__, "tool_drafts")
|
|
self.assertIn("draft_id", ToolDraft.__table__.columns)
|
|
self.assertIn("tool_name", ToolDraft.__table__.columns)
|
|
self.assertIn("display_name", ToolDraft.__table__.columns)
|
|
self.assertIn("domain", ToolDraft.__table__.columns)
|
|
self.assertIn("description", ToolDraft.__table__.columns)
|
|
self.assertIn("business_goal", ToolDraft.__table__.columns)
|
|
self.assertIn("status", ToolDraft.__table__.columns)
|
|
self.assertIn("summary", ToolDraft.__table__.columns)
|
|
self.assertIn("parameters_json", ToolDraft.__table__.columns)
|
|
self.assertIn("required_parameter_count", ToolDraft.__table__.columns)
|
|
self.assertIn("current_version_number", ToolDraft.__table__.columns)
|
|
self.assertIn("version_count", ToolDraft.__table__.columns)
|
|
self.assertIn("generation_model", ToolDraft.__table__.columns)
|
|
self.assertIn("requires_director_approval", ToolDraft.__table__.columns)
|
|
self.assertIn("owner_staff_account_id", ToolDraft.__table__.columns)
|
|
self.assertIn("owner_display_name", ToolDraft.__table__.columns)
|
|
self.assertIn("created_at", ToolDraft.__table__.columns)
|
|
self.assertIn("updated_at", ToolDraft.__table__.columns)
|
|
|
|
def test_tool_draft_uses_unique_tool_name_foreign_key_and_draft_status_default(self):
|
|
self.assertTrue(ToolDraft.__table__.columns["tool_name"].unique)
|
|
|
|
foreign_keys = list(ToolDraft.__table__.columns["owner_staff_account_id"].foreign_keys)
|
|
self.assertEqual(len(foreign_keys), 1)
|
|
self.assertEqual(str(foreign_keys[0].target_fullname), "staff_accounts.id")
|
|
|
|
status_column = ToolDraft.__table__.columns["status"]
|
|
self.assertEqual(status_column.default.arg, ToolLifecycleStatus.DRAFT)
|
|
self.assertEqual(status_column.type.process_bind_param("approved", None), "approved")
|
|
self.assertEqual(status_column.type.process_result_value("draft", None), ToolLifecycleStatus.DRAFT)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|