skip if current router does not have observer for custom event (#1147)

* skip if current router does not have observer for custom event

* Test custom event in router

* Feature changelog file

* fix style
This commit is contained in:
Andrey Tikhonov 2023-04-08 16:39:48 +02:00 committed by GitHub
parent 99cf7028ec
commit 268b7e759d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 34 additions and 10 deletions

View file

@ -1,6 +1,7 @@
import pytest
from aiogram.dispatcher.event.bases import UNHANDLED, SkipHandler, skip
from aiogram.dispatcher.event.telegram import TelegramEventObserver
from aiogram.dispatcher.router import Router
@ -161,3 +162,20 @@ class TestRouter:
assert tuple(r2_1.chain_head) == (r2_1, r1)
assert tuple(r2_2.chain_head) == (r2_2, r1)
assert tuple(r3.chain_head) == (r3, r2_1, r1)
async def test_custom_evenv_nested_router(self):
r1 = Router()
r2 = Router()
r3 = Router()
r3.observers["custom-event"] = TelegramEventObserver(r3, event_name="custom-event")
async def handler(evt):
return evt
r1.include_router(r2)
r1.include_router(r3)
r3.observers["custom-event"].register(handler)
assert await r1.propagate_event(update_type="custom-event", event=None) is None
assert await r2.propagate_event(update_type="custom-event", event=None) is UNHANDLED
assert await r3.propagate_event(update_type="custom-event", event=None) is None