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()