Переписал почти все тесты
feat: улучшено логирование и обработка скорингов в PostService и RagApiClient - Добавлены отладочные сообщения для передачи скорингов в функции обработки постов. - Обновлено логирование успешного получения скорингов из RAG API с дополнительной информацией. - Оптимизирована обработка скорингов в функции get_text_message для улучшения отладки. - Обновлены тесты для проверки новых функциональных возможностей и обработки ошибок.
This commit is contained in:
103
tests/test_callback_dependency_factory.py
Normal file
103
tests/test_callback_dependency_factory.py
Normal 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()
|
||||
Reference in New Issue
Block a user