Fix resolve filters chain (#736)

* filter resolving don`t need children routers filters

* add patchnote

* Rename 735.bugfix to 736.bugfix

* add tests for routers chains

* delete unused Router.chain property
This commit is contained in:
darksidecat 2021-11-08 23:27:20 +02:00 committed by GitHub
parent 1c2c7fd88c
commit 19aa498682
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 34 additions and 8 deletions

View file

@ -99,6 +99,8 @@ class TestTelegramEventObserver:
assert MyFilter2 in filters_chain3
assert MyFilter3 in filters_chain3
assert MyFilter3 not in filters_chain1
async def test_resolve_filters_data_from_parent_router(self):
class FilterSet(BaseFilter):
set_filter: bool

View file

@ -134,3 +134,33 @@ class TestRouter:
r2.message.register(handler)
assert await r1.propagate_event(update_type="message", event=None) is UNHANDLED
async def test_router_chain_tail(self):
r1 = Router(name="Router 1")
r2_1 = Router(name="Router 2-1")
r2_2 = Router(name="Router 2-2")
r3 = Router(name="Router 3")
r1.include_router(r2_1)
r1.include_router(r2_2)
r2_1.include_router(r3)
assert tuple(r1.chain_tail) == (r1, r2_1, r3, r2_2)
assert tuple(r2_1.chain_tail) == (r2_1, r3)
assert tuple(r2_2.chain_tail) == (r2_2,)
assert tuple(r3.chain_tail) == (r3,)
async def test_router_chain_head(self):
r1 = Router(name="Router 1")
r2_1 = Router(name="Router 2-1")
r2_2 = Router(name="Router 2-2")
r3 = Router(name="Router 3")
r1.include_router(r2_1)
r1.include_router(r2_2)
r2_1.include_router(r3)
assert tuple(r1.chain_head) == (r1,)
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)