All checks were successful
CI pipeline / Test & Code Quality (push) Successful in 34s
110 lines
3.7 KiB
Python
110 lines
3.7 KiB
Python
"""
|
||
Тесты для 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()
|