mirror of
https://github.com/aiogram/aiogram.git
synced 2025-12-12 10:11:52 +00:00
refactor(handler): rename observers
Rename observers but with backward compatibility, relevant documentation
This commit is contained in:
parent
b097680f3c
commit
4124770b0e
21 changed files with 297 additions and 110 deletions
|
|
@ -1,4 +1,5 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.types import ReplyKeyboardRemove
|
||||
|
||||
|
||||
|
|
|
|||
49
tests/test_dispatcher/test_deprecated.py
Normal file
49
tests/test_dispatcher/test_deprecated.py
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.dispatcher.event.observer import TelegramEventObserver
|
||||
from aiogram.dispatcher.router import Router
|
||||
|
||||
OBSERVERS = {
|
||||
"callback_query",
|
||||
"channel_post",
|
||||
"chosen_inline_result",
|
||||
"edited_channel_post",
|
||||
"edited_message",
|
||||
"errors",
|
||||
"inline_query",
|
||||
"message",
|
||||
"poll",
|
||||
"poll_answer",
|
||||
"pre_checkout_query",
|
||||
"shipping_query",
|
||||
"update",
|
||||
}
|
||||
|
||||
|
||||
def test_deprecated_handlers_name():
|
||||
from aiogram import __version__
|
||||
|
||||
minor_partial = int(__version__.split(".")[1])
|
||||
|
||||
if minor_partial >= 2:
|
||||
do_assert = pytest.raises(AttributeError)
|
||||
else:
|
||||
do_assert = pytest.warns(DeprecationWarning)
|
||||
|
||||
router = Router()
|
||||
|
||||
async def _(__):
|
||||
...
|
||||
|
||||
with do_assert:
|
||||
for decor in OBSERVERS:
|
||||
getattr(router, decor + "_handler")
|
||||
|
||||
assert all(
|
||||
isinstance(getattr(router, handler + "_handler"), TelegramEventObserver)
|
||||
for handler in OBSERVERS
|
||||
)
|
||||
|
||||
assert all(
|
||||
isinstance(getattr(router, handler), TelegramEventObserver) for handler in OBSERVERS
|
||||
)
|
||||
|
|
@ -55,7 +55,7 @@ class TestDispatcher:
|
|||
dp = Dispatcher()
|
||||
bot = Bot("42:TEST")
|
||||
|
||||
@dp.message_handler()
|
||||
@dp.message()
|
||||
async def my_handler(message: Message, **kwargs):
|
||||
assert "bot" in kwargs
|
||||
assert isinstance(kwargs["bot"], Bot)
|
||||
|
|
@ -86,7 +86,7 @@ class TestDispatcher:
|
|||
dp = Dispatcher()
|
||||
bot = Bot("42:TEST")
|
||||
|
||||
@dp.message_handler()
|
||||
@dp.message()
|
||||
async def my_handler(message: Message):
|
||||
assert message.text == "test"
|
||||
return message.text
|
||||
|
|
@ -142,7 +142,7 @@ class TestDispatcher:
|
|||
async def test_process_update_handled(self, bot: MockedBot):
|
||||
dispatcher = Dispatcher()
|
||||
|
||||
@dispatcher.update_handler()
|
||||
@dispatcher.update()
|
||||
async def update_handler(update: Update):
|
||||
pass
|
||||
|
||||
|
|
@ -152,7 +152,7 @@ class TestDispatcher:
|
|||
async def test_process_update_call_request(self, bot: MockedBot):
|
||||
dispatcher = Dispatcher()
|
||||
|
||||
@dispatcher.update_handler()
|
||||
@dispatcher.update()
|
||||
async def update_handler(update: Update):
|
||||
return GetMe()
|
||||
|
||||
|
|
@ -167,7 +167,7 @@ class TestDispatcher:
|
|||
async def test_process_update_exception(self, bot: MockedBot, caplog):
|
||||
dispatcher = Dispatcher()
|
||||
|
||||
@dispatcher.update_handler()
|
||||
@dispatcher.update()
|
||||
async def update_handler(update: Update):
|
||||
raise Exception("Kaboom!")
|
||||
|
||||
|
|
@ -229,7 +229,7 @@ class TestDispatcher:
|
|||
@pytest.mark.asyncio
|
||||
async def test_feed_webhook_update_fast_process(self, bot: MockedBot):
|
||||
dispatcher = Dispatcher()
|
||||
dispatcher.message_handler.register(simple_message_handler)
|
||||
dispatcher.message.register(simple_message_handler)
|
||||
|
||||
response = await dispatcher.feed_webhook_update(bot, RAW_UPDATE, _timeout=2)
|
||||
assert isinstance(response, dict)
|
||||
|
|
@ -251,7 +251,7 @@ class TestDispatcher:
|
|||
warnings.simplefilter("always")
|
||||
|
||||
dispatcher = Dispatcher()
|
||||
dispatcher.message_handler.register(simple_message_handler)
|
||||
dispatcher.message.register(simple_message_handler)
|
||||
|
||||
with patch(
|
||||
"aiogram.dispatcher.dispatcher.Dispatcher._silent_call_request",
|
||||
|
|
@ -267,7 +267,7 @@ class TestDispatcher:
|
|||
warnings.simplefilter("always")
|
||||
|
||||
dispatcher = Dispatcher()
|
||||
dispatcher.message_handler.register(invalid_message_handler)
|
||||
dispatcher.message.register(invalid_message_handler)
|
||||
|
||||
response = await dispatcher.feed_webhook_update(bot, RAW_UPDATE, _timeout=1)
|
||||
assert response is None
|
||||
|
|
|
|||
|
|
@ -109,14 +109,14 @@ class TestTelegramEventObserver:
|
|||
router1.include_router(router2)
|
||||
router2.include_router(router3)
|
||||
|
||||
router1.message_handler.bind_filter(MyFilter1)
|
||||
router1.message_handler.bind_filter(MyFilter2)
|
||||
router2.message_handler.bind_filter(MyFilter2)
|
||||
router3.message_handler.bind_filter(MyFilter3)
|
||||
router1.message.bind_filter(MyFilter1)
|
||||
router1.message.bind_filter(MyFilter2)
|
||||
router2.message.bind_filter(MyFilter2)
|
||||
router3.message.bind_filter(MyFilter3)
|
||||
|
||||
filters_chain1 = list(router1.message_handler._resolve_filters_chain())
|
||||
filters_chain2 = list(router2.message_handler._resolve_filters_chain())
|
||||
filters_chain3 = list(router3.message_handler._resolve_filters_chain())
|
||||
filters_chain1 = list(router1.message._resolve_filters_chain())
|
||||
filters_chain2 = list(router2.message._resolve_filters_chain())
|
||||
filters_chain3 = list(router3.message._resolve_filters_chain())
|
||||
|
||||
assert MyFilter1 in filters_chain1
|
||||
assert MyFilter1 in filters_chain2
|
||||
|
|
@ -128,7 +128,7 @@ class TestTelegramEventObserver:
|
|||
|
||||
def test_resolve_filters(self):
|
||||
router = Router(use_builtin_filters=False)
|
||||
observer = router.message_handler
|
||||
observer = router.message
|
||||
observer.bind_filter(MyFilter1)
|
||||
|
||||
resolved = observer.resolve_filters({"test": "PASS"})
|
||||
|
|
@ -149,7 +149,7 @@ class TestTelegramEventObserver:
|
|||
|
||||
def test_register(self):
|
||||
router = Router(use_builtin_filters=False)
|
||||
observer = router.message_handler
|
||||
observer = router.message
|
||||
observer.bind_filter(MyFilter1)
|
||||
|
||||
assert observer.register(my_handler) == my_handler
|
||||
|
|
@ -174,7 +174,7 @@ class TestTelegramEventObserver:
|
|||
|
||||
def test_register_decorator(self):
|
||||
router = Router(use_builtin_filters=False)
|
||||
observer = router.message_handler
|
||||
observer = router.message
|
||||
|
||||
@observer()
|
||||
async def my_handler(event: Any):
|
||||
|
|
@ -186,7 +186,7 @@ class TestTelegramEventObserver:
|
|||
@pytest.mark.asyncio
|
||||
async def test_trigger(self):
|
||||
router = Router(use_builtin_filters=False)
|
||||
observer = router.message_handler
|
||||
observer = router.message
|
||||
observer.bind_filter(MyFilter1)
|
||||
observer.register(my_handler, test="ok")
|
||||
|
||||
|
|
@ -211,7 +211,7 @@ class TestTelegramEventObserver:
|
|||
)
|
||||
def test_register_filters_via_decorator(self, count, handler, filters):
|
||||
router = Router(use_builtin_filters=False)
|
||||
observer = router.message_handler
|
||||
observer = router.message
|
||||
|
||||
for index in range(count):
|
||||
wrapped_handler = functools.partial(handler, index=index)
|
||||
|
|
@ -227,7 +227,7 @@ class TestTelegramEventObserver:
|
|||
@pytest.mark.asyncio
|
||||
async def test_trigger_right_context_in_handlers(self):
|
||||
router = Router(use_builtin_filters=False)
|
||||
observer = router.message_handler
|
||||
observer = router.message
|
||||
observer.register(
|
||||
pipe_handler, lambda event: {"a": 1}, lambda event: False
|
||||
) # {"a": 1} should not be in result
|
||||
|
|
|
|||
|
|
@ -79,18 +79,18 @@ class TestRouter:
|
|||
|
||||
def test_observers_config(self):
|
||||
router = Router()
|
||||
assert router.update_handler.handlers
|
||||
assert router.update_handler.handlers[0].callback == router._listen_update
|
||||
assert router.observers["message"] == router.message_handler
|
||||
assert router.observers["edited_message"] == router.edited_message_handler
|
||||
assert router.observers["channel_post"] == router.channel_post_handler
|
||||
assert router.observers["edited_channel_post"] == router.edited_channel_post_handler
|
||||
assert router.observers["inline_query"] == router.inline_query_handler
|
||||
assert router.observers["chosen_inline_result"] == router.chosen_inline_result_handler
|
||||
assert router.observers["callback_query"] == router.callback_query_handler
|
||||
assert router.observers["shipping_query"] == router.shipping_query_handler
|
||||
assert router.observers["pre_checkout_query"] == router.pre_checkout_query_handler
|
||||
assert router.observers["poll"] == router.poll_handler
|
||||
assert router.update.handlers
|
||||
assert router.update.handlers[0].callback == router._listen_update
|
||||
assert router.observers["message"] == router.message
|
||||
assert router.observers["edited_message"] == router.edited_message
|
||||
assert router.observers["channel_post"] == router.channel_post
|
||||
assert router.observers["edited_channel_post"] == router.edited_channel_post
|
||||
assert router.observers["inline_query"] == router.inline_query
|
||||
assert router.observers["chosen_inline_result"] == router.chosen_inline_result
|
||||
assert router.observers["callback_query"] == router.callback_query
|
||||
assert router.observers["shipping_query"] == router.shipping_query
|
||||
assert router.observers["pre_checkout_query"] == router.pre_checkout_query
|
||||
assert router.observers["poll"] == router.poll
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@pytest.mark.parametrize(
|
||||
|
|
@ -341,7 +341,7 @@ class TestRouter:
|
|||
router3 = Router()
|
||||
router1.include_router(router2)
|
||||
router1.include_router(router3)
|
||||
observer = router3.message_handler
|
||||
observer = router3.message
|
||||
|
||||
@observer()
|
||||
async def my_handler(event: Message, **kwargs: Any):
|
||||
|
|
@ -429,7 +429,7 @@ class TestRouter:
|
|||
router = Router()
|
||||
root_router.include_router(router)
|
||||
|
||||
@router.message_handler()
|
||||
@router.message()
|
||||
async def message_handler(message: Message):
|
||||
raise Exception("KABOOM")
|
||||
|
||||
|
|
@ -452,7 +452,7 @@ class TestRouter:
|
|||
chat=update.message.chat,
|
||||
)
|
||||
|
||||
@root_router.errors_handler()
|
||||
@root_router.errors()
|
||||
async def root_error_handler(exception: Exception):
|
||||
return exception
|
||||
|
||||
|
|
@ -466,7 +466,7 @@ class TestRouter:
|
|||
assert isinstance(response, Exception)
|
||||
assert str(response) == "KABOOM"
|
||||
|
||||
@router.errors_handler()
|
||||
@router.errors()
|
||||
async def error_handler(exception: Exception):
|
||||
return "KABOOM"
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue