""" Тесты для helper_bot.middlewares.dependencies_middleware. """ from unittest.mock import AsyncMock, MagicMock, patch import pytest from helper_bot.middlewares.dependencies_middleware import \ DependenciesMiddleware @pytest.mark.unit @pytest.mark.asyncio class TestDependenciesMiddleware: """Тесты для DependenciesMiddleware.""" @pytest.fixture def middleware(self): """Экземпляр middleware.""" return DependenciesMiddleware() @pytest.fixture def mock_handler(self): """Мок handler.""" return AsyncMock(return_value="ok") @patch("helper_bot.middlewares.dependencies_middleware.get_global_instance") async def test_injects_bot_db_and_settings_into_data( self, mock_get_global, middleware, mock_handler ): """В data подставляются bot_db и settings из get_global_instance.""" mock_bdf = MagicMock() mock_db = MagicMock() mock_settings = {"Telegram": {}} mock_bdf.get_db.return_value = mock_db mock_bdf.settings = mock_settings mock_get_global.return_value = mock_bdf event = MagicMock() data = {} result = await middleware(mock_handler, event, data) mock_get_global.assert_called_once() assert data["bot_db"] is mock_db assert data["settings"] is mock_settings mock_handler.assert_called_once_with(event, data) assert result == "ok" @patch("helper_bot.middlewares.dependencies_middleware.get_global_instance") async def test_exception_does_not_break_chain( self, mock_get_global, middleware, mock_handler ): """При исключении в get_global_instance handler всё равно вызывается.""" mock_get_global.side_effect = RuntimeError("No global instance") event = MagicMock() data = {} result = await middleware(mock_handler, event, data) mock_handler.assert_called_once_with(event, data) assert result == "ok"