From 55f6c29ba6755cbd9c0cbb0b3dfd7daf3005373c Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 24 Nov 2019 01:07:43 +0200 Subject: [PATCH] Remove awaitable checks from TestObserver --- Makefile | 2 +- experiment.py | 53 +++++++++++++++++++ .../test_event/test_observer.py | 2 - 3 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 experiment.py diff --git a/Makefile b/Makefile index 2d956d67..9fd2341f 100644 --- a/Makefile +++ b/Makefile @@ -98,7 +98,7 @@ lint: isort black flake8 mypy .PHONY: test test: - $(py) pytest --cov=aiogram --cov-config .coveragerc + $(py) pytest --cov=aiogram --cov-config .coveragerc -p no:warnings tests/ .PHONY: test-coverage test-coverage: diff --git a/experiment.py b/experiment.py new file mode 100644 index 00000000..557bc2eb --- /dev/null +++ b/experiment.py @@ -0,0 +1,53 @@ +import asyncio +import os +from typing import Any, Dict, Union + +from aiogram import Bot, types +from aiogram.api.types import Update +from aiogram.dispatcher.dispatcher import Dispatcher +from aiogram.dispatcher.filters.base import BaseFilter +from aiogram.dispatcher.router import Router + +TELEGRAM_TOKEN = os.getenv("TELEGRAM_TOKEN") + + +class Text(BaseFilter): + text: str + + async def __call__(self, obj: types.Message) -> Union[bool, Dict[str, Any]]: + if obj.text == self.text: + return {"text": self.text} + + +dp = Dispatcher() +router2 = Router() +router3 = Router() +dp.include_router(router2) +router2.include_router(router3) +dp.message_handler.bind_filter(Text) + + +@dp.message_handler(text="1") +async def message_handler_1(message: types.Message, bot: Bot): + await bot.send_message(chat_id=message.from_user.id, text="PASS: 1") + + +@router2.message_handler(text="2") +async def message_handler_2(message: types.Message, bot: Bot, text: str): + await bot.send_message(chat_id=message.from_user.id, text=f"PASS: {text}") + + +@router3.message_handler(text="3") +async def message_handler_3(message: types.Message, event_update: Update, bot: Bot): + await bot.send_message( + chat_id=message.from_user.id, text=event_update.json(skip_defaults=True, by_alias=True) + ) + + +async def main(): + async with Bot(TELEGRAM_TOKEN) as bot: + await dp.polling(bot=bot) + + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/tests/test_dispatcher/test_event/test_observer.py b/tests/test_dispatcher/test_event/test_observer.py index f3f1a82b..651387dd 100644 --- a/tests/test_dispatcher/test_event/test_observer.py +++ b/tests/test_dispatcher/test_event/test_observer.py @@ -43,7 +43,6 @@ class TestEventObserver: assert len(observer.handlers) == index + 1 assert isinstance(registered_handler, HandlerObject) assert registered_handler.callback == wrapped_handler - assert registered_handler.awaitable assert len(registered_handler.filters) == len(filters) @pytest.mark.parametrize( @@ -69,7 +68,6 @@ class TestEventObserver: assert len(observer.handlers) == index + 1 assert isinstance(registered_handler, HandlerObject) assert registered_handler.callback == wrapped_handler - assert registered_handler.awaitable assert len(registered_handler.filters) == len(filters) @pytest.mark.asyncio