Переписал почти все тесты

feat: улучшено логирование и обработка скорингов в PostService и RagApiClient

- Добавлены отладочные сообщения для передачи скорингов в функции обработки постов.
- Обновлено логирование успешного получения скорингов из RAG API с дополнительной информацией.
- Оптимизирована обработка скорингов в функции get_text_message для улучшения отладки.
- Обновлены тесты для проверки новых функциональных возможностей и обработки ошибок.
This commit is contained in:
2026-01-30 00:55:47 +03:00
parent e87f4af82f
commit a5faa4bdc6
27 changed files with 4320 additions and 8 deletions

View File

@@ -203,6 +203,51 @@ class TestAdminService:
# Assert
self.mock_db.delete_user_blacklist.assert_called_once_with(user_id)
@pytest.mark.asyncio
async def test_get_banned_users_success(self):
"""Тест успешного получения списка забаненных пользователей."""
self.mock_db.get_banned_users_from_db = AsyncMock(
return_value=[(1, "спам", None), (2, "оскорбления", "2025-02-01")]
)
self.mock_db.get_username = AsyncMock(side_effect=["user1", "user2"])
self.mock_db.get_full_name_by_id = AsyncMock(side_effect=["Name One", "Name Two"])
result = await self.admin_service.get_banned_users()
assert len(result) == 2
assert result[0].user_id == 1
assert result[0].reason == "спам"
assert result[0].unban_date is None
assert result[1].user_id == 2
assert result[1].reason == "оскорбления"
@pytest.mark.asyncio
async def test_get_banned_users_uses_user_id_fallback(self):
"""get_banned_users при отсутствии username/full_name использует User_{id}."""
self.mock_db.get_banned_users_from_db = AsyncMock(return_value=[(99, "reason", None)])
self.mock_db.get_username = AsyncMock(return_value=None)
self.mock_db.get_full_name_by_id = AsyncMock(return_value=None)
result = await self.admin_service.get_banned_users()
assert len(result) == 1
assert result[0].username == "User_99"
@pytest.mark.asyncio
async def test_get_banned_users_for_display_success(self):
"""Тест успешного получения данных для отображения забаненных."""
with patch("helper_bot.handlers.admin.services.get_banned_users_list", new_callable=AsyncMock) as mock_list:
with patch("helper_bot.handlers.admin.services.get_banned_users_buttons", new_callable=AsyncMock) as mock_buttons:
mock_list.return_value = "Список забаненных"
mock_buttons.return_value = []
text, buttons = await self.admin_service.get_banned_users_for_display(0)
assert text == "Список забаненных"
assert buttons == []
mock_list.assert_awaited_once_with(0, self.mock_db)
mock_buttons.assert_awaited_once_with(self.mock_db)
class TestUser:
"""Тесты для модели User"""