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.
orquestrador/tests/test_staff_account_model.py

50 lines
1.8 KiB
Python

import unittest
from admin_app.db.models import StaffAccount
from shared.contracts import StaffRole
class StaffAccountModelTests(unittest.TestCase):
def test_staff_account_declares_expected_table_and_columns(self):
self.assertEqual(StaffAccount.__tablename__, "staff_accounts")
self.assertIn("email", StaffAccount.__table__.columns)
self.assertIn("display_name", StaffAccount.__table__.columns)
self.assertIn("password_hash", StaffAccount.__table__.columns)
self.assertIn("role", StaffAccount.__table__.columns)
self.assertIn("is_active", StaffAccount.__table__.columns)
self.assertIn("last_login_at", StaffAccount.__table__.columns)
self.assertIn("created_at", StaffAccount.__table__.columns)
self.assertIn("updated_at", StaffAccount.__table__.columns)
def test_staff_account_role_column_uses_shared_hierarchy_values(self):
role_column = StaffAccount.__table__.columns["role"]
enum_values = tuple(role_column.type.enums)
self.assertEqual(
enum_values,
(
StaffRole.VIEWER.value,
StaffRole.STAFF.value,
StaffRole.ADMIN.value,
),
)
def test_staff_account_can_hold_admin_identity_fields(self):
account = StaffAccount(
email="admin@empresa.com",
display_name="Administrador Interno",
password_hash="hashed-secret",
role=StaffRole.ADMIN,
is_active=True,
)
self.assertEqual(account.email, "admin@empresa.com")
self.assertEqual(account.display_name, "Administrador Interno")
self.assertEqual(account.password_hash, "hashed-secret")
self.assertEqual(account.role, StaffRole.ADMIN)
self.assertTrue(account.is_active)
if __name__ == "__main__":
unittest.main()