Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add new method for Router #1117

Merged
merged 6 commits into from Feb 11, 2023
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGES/1117.feature.rst
@@ -0,0 +1 @@
Added a method that allows you to compactly register routers
6 changes: 6 additions & 0 deletions aiogram/dispatcher/router.py
Expand Up @@ -179,6 +179,12 @@ def parent_router(self, router: Router) -> None:
self._parent_router = router
router.sub_routers.append(self)

def include_routers(self, *routers) -> Router:
if not routers:
raise ValueError("You must provide routers")
JrooTJunior marked this conversation as resolved.
Show resolved Hide resolved
for router in routers:
self.include_router(router)

def include_router(self, router: Router) -> Router:
"""
Attach another router.
Expand Down
14 changes: 14 additions & 0 deletions tests/test_dispatcher/test_router.py
Expand Up @@ -33,6 +33,20 @@ def test_including_routers(self):
assert router3.parent_router is router2
assert router3.sub_routers == []

def test_including_many_routers(self):
router = Router()
router1 = Router()
router2 = Router()

router.include_routers(router1, router2)

assert router.sub_routers == [router1, router2]

def test_including_many_routers_bad_type(self):
router = Router()
with pytest.raises(ValueError, match="You must provide routers"):
JrooTJunior marked this conversation as resolved.
Show resolved Hide resolved
router.include_routers()

def test_include_router_by_string_bad_type(self):
router = Router()
with pytest.raises(ValueError, match=r"router should be instance of Router"):
Expand Down