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

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

@@ -0,0 +1,103 @@
"""
Тесты для helper_bot.handlers.callback.dependency_factory.
"""
from unittest.mock import MagicMock, patch
import pytest
from helper_bot.handlers.callback.dependency_factory import (
get_ban_service,
get_post_publish_service,
)
from helper_bot.handlers.callback.services import BanService, PostPublishService
@pytest.mark.unit
class TestGetPostPublishService:
"""Тесты для get_post_publish_service."""
def test_returns_post_publish_service_with_dependencies_from_factory(self):
"""Возвращается PostPublishService с db, settings, s3_storage, scoring_manager из get_global_instance."""
mock_db = MagicMock()
mock_settings = {"Telegram": {"group_for_posts": "-100", "main_public": "@ch", "important_logs": "-200"}}
mock_s3 = MagicMock()
mock_scoring = MagicMock()
mock_bdf = MagicMock()
mock_bdf.get_db.return_value = mock_db
mock_bdf.settings = mock_settings
mock_bdf.get_s3_storage.return_value = mock_s3
mock_bdf.get_scoring_manager.return_value = mock_scoring
with patch(
"helper_bot.handlers.callback.dependency_factory.get_global_instance",
return_value=mock_bdf,
):
service = get_post_publish_service()
assert isinstance(service, PostPublishService)
assert service.bot is None
assert service.db is mock_db
assert service.settings is mock_settings
assert service.s3_storage is mock_s3
assert service.scoring_manager is mock_scoring
mock_bdf.get_db.assert_called_once()
mock_bdf.get_s3_storage.assert_called_once()
mock_bdf.get_scoring_manager.assert_called_once()
def test_post_publish_service_get_bot_from_message_when_bot_none(self):
"""PostPublishService._get_bot возвращает message.bot когда self.bot is None."""
mock_db = MagicMock()
mock_settings = {
"Telegram": {
"group_for_posts": "-100",
"main_public": "@ch",
"important_logs": "-200",
}
}
mock_bdf = MagicMock()
mock_bdf.get_db.return_value = mock_db
mock_bdf.settings = mock_settings
mock_bdf.get_s3_storage.return_value = None
mock_bdf.get_scoring_manager.return_value = None
with patch(
"helper_bot.handlers.callback.dependency_factory.get_global_instance",
return_value=mock_bdf,
):
service = get_post_publish_service()
message = MagicMock()
message.bot = MagicMock()
bot = service._get_bot(message)
assert bot is message.bot
@pytest.mark.unit
class TestGetBanService:
"""Тесты для get_ban_service."""
def test_returns_ban_service_with_dependencies_from_factory(self):
"""Возвращается BanService с db и settings из get_global_instance."""
mock_db = MagicMock()
mock_settings = {
"Telegram": {
"group_for_posts": "-100",
"important_logs": "-200",
}
}
mock_bdf = MagicMock()
mock_bdf.get_db.return_value = mock_db
mock_bdf.settings = mock_settings
with patch(
"helper_bot.handlers.callback.dependency_factory.get_global_instance",
return_value=mock_bdf,
):
service = get_ban_service()
assert isinstance(service, BanService)
assert service.bot is None
assert service.db is mock_db
assert service.settings is mock_settings
mock_bdf.get_db.assert_called_once()