Fix admin API gaps for users, exchange checks, and parser logs

This commit is contained in:
2026-03-19 16:48:38 +01:00
parent 25176f31b4
commit 941c268d32
22 changed files with 817 additions and 28 deletions

View File

@@ -122,6 +122,7 @@ class UserServiceTest(TestCase):
self.user.id,
role=UserService.ROLE_ADMIN,
first_name="Иван",
middle_name="Иванович",
last_name="Иванов",
)
@@ -130,6 +131,7 @@ class UserServiceTest(TestCase):
)
self.assertTrue(updated_user.is_staff)
self.assertEqual(updated_user.profile.first_name, "Иван")
self.assertEqual(updated_user.profile.middle_name, "Иванович")
self.assertEqual(updated_user.profile.last_name, "Иванов")
def test_update_managed_user_updates_password(self):
@@ -161,6 +163,37 @@ class UserServiceTest(TestCase):
user = UserService.deactivate_user(self.user.id)
self.assertFalse(user.is_active)
def test_activate_user_success(self):
"""Test activation of user."""
self.user.is_active = False
self.user.save(update_fields=["is_active"])
user = UserService.activate_user(self.user.id)
self.assertTrue(user.is_active)
def test_get_filtered_users_queryset_searches_by_profile_name(self):
ProfileFactory.create_profile(
user=self.user,
first_name="Найден",
middle_name="Тестович",
last_name="Пользователь",
)
queryset = UserService.get_filtered_users_queryset(search="Тестович")
self.assertEqual(list(queryset.values_list("id", flat=True)), [self.user.id])
def test_get_filtered_users_queryset_orders_by_profile_field(self):
first = UserFactory.create_user()
second = UserFactory.create_user()
ProfileFactory.create_profile(user=first, first_name="Борис")
ProfileFactory.create_profile(user=second, first_name="Алексей")
queryset = UserService.get_filtered_users_queryset(ordering="first_name")
ids = list(queryset.values_list("id", flat=True)[:2])
self.assertEqual(ids, [second.id, first.id])
def test_get_user_capabilities_for_admin(self):
"""Test admin capabilities set."""
admin = UserFactory.create_user(is_staff=True)
@@ -236,6 +269,7 @@ class ProfileServiceTest(TestCase):
self.profile = ProfileFactory.create_profile(user=self.user)
self.profile_data = {
"first_name": fake.first_name(),
"middle_name": fake.first_name(),
"last_name": fake.last_name(),
"bio": fake.text(max_nb_chars=200),
"date_of_birth": str(fake.date_of_birth(minimum_age=18, maximum_age=80)),
@@ -270,6 +304,7 @@ class ProfileServiceTest(TestCase):
self.assertIsNotNone(updated_profile)
self.assertEqual(updated_profile.first_name, self.profile_data["first_name"])
self.assertEqual(updated_profile.middle_name, self.profile_data["middle_name"])
self.assertEqual(updated_profile.last_name, self.profile_data["last_name"])
self.assertEqual(updated_profile.bio, self.profile_data["bio"])
@@ -288,6 +323,7 @@ class ProfileServiceTest(TestCase):
self.assertEqual(profile_data["email"], self.user.email)
self.assertEqual(profile_data["username"], self.user.username)
self.assertEqual(profile_data["first_name"], self.profile.first_name)
self.assertEqual(profile_data["middle_name"], self.profile.middle_name)
self.assertEqual(profile_data["last_name"], self.profile.last_name)
self.assertEqual(profile_data["full_name"], self.profile.full_name)
self.assertEqual(profile_data["bio"], self.profile.bio)