Check bot instance on Dispatcher __init__

This commit is contained in:
Oleg A 2019-02-25 12:34:26 +03:00
parent dd899c9ca0
commit 3a38125619
2 changed files with 39 additions and 1 deletions

View file

@ -35,6 +35,9 @@ class Dispatcher(DataMixin, ContextInstanceMixin):
throttling_rate_limit=DEFAULT_RATE_LIMIT, no_throttle_error=False,
filters_factory=None):
if not isinstance(bot, Bot):
raise TypeError(f"Argument 'bot' must be an instance of Bot, not '{type(bot).__name__}'")
if loop is None:
loop = bot.loop
if storage is None:
@ -276,7 +279,7 @@ class Dispatcher(DataMixin, ContextInstanceMixin):
:return:
"""
if self._polling:
if hasattr(self, '_polling') and self._polling:
log.info('Stop polling...')
self._polling = False

35
tests/test_dispatcher.py Normal file
View file

@ -0,0 +1,35 @@
from aiogram import Dispatcher, Bot
import pytest
pytestmark = pytest.mark.asyncio
@pytest.yield_fixture()
async def bot(event_loop):
""" Bot fixture """
_bot = Bot(token='123456789:AABBCCDDEEFFaabbccddeeff-1234567890',
loop=event_loop)
yield _bot
await _bot.close()
class TestDispatcherInit:
async def test_successful_init(self, bot):
"""
Success __init__ case
:param bot: bot instance
:type bot: Bot
"""
dp = Dispatcher(bot=bot)
assert isinstance(dp, Dispatcher)
@pytest.mark.parametrize("bot_instance", [None, Bot, 123, 'abc'])
async def test_wrong_bot_instance(self, bot_instance):
"""
User provides wrong data to 'bot' argument.
:return: TypeError with reason
"""
with pytest.raises(TypeError):
_ = Dispatcher(bot=bot_instance)