aiogram/tests/test_dispatcher/test_handler/test_base.py
mpa de962d043d
fix(tests): use relevant BaseHandler.__init__ signature
fix breaking tests, change signature of BaseHandler
2020-05-28 05:34:31 +04:00

58 lines
1.6 KiB
Python

import asyncio
import datetime
from typing import Any
import pytest
from aiogram import Bot
from aiogram.api.types import Chat, Message, Update
from aiogram.dispatcher.handler.base import BaseHandler
class MyHandler(BaseHandler):
async def handle(self) -> Any:
await asyncio.sleep(0.1)
return 42
class TestBaseClassBasedHandler:
@pytest.mark.asyncio
async def test_base_handler(self):
event = Update(update_id=42)
handler = MyHandler(event=event, data=dict(key=42))
assert handler.event == event
assert handler.data["key"] == 42
assert not hasattr(handler, "filters")
assert await handler == 42
@pytest.mark.asyncio
async def test_bot_from_context(self):
event = Update(update_id=42)
handler = MyHandler(event=event, data=dict(key=42))
bot = Bot("42:TEST")
with pytest.raises(LookupError):
handler.bot
Bot.set_current(bot)
assert handler.bot == bot
@pytest.mark.asyncio
async def test_bot_from_data(self):
event = Update(update_id=42)
bot = Bot("42:TEST")
handler = MyHandler(event=event, data=dict(key=42, bot=bot))
assert "bot" in handler.data
assert handler.bot == bot
def test_update_from_data(self):
event = Message(
message_id=42, chat=Chat(id=42, type="private"), date=datetime.datetime.now()
)
update = Update(update_id=42, message=event)
handler = MyHandler(event=event, data=dict(update=update))
assert handler.event == event
assert handler.update == update