mirror of
https://github.com/aiogram/aiogram.git
synced 2025-12-12 02:03:04 +00:00
Beta 3 (#884)
* Rework middlewares, separate management to `MiddlewareManager` class * Rework middlewares * Added changes description for redis * Added changes description for redis * Fixed tests with Redis // aioredis replacement * Changed msg.<html/md>_text attributes behaviour * Added changelog for spoilers * Added possibility to get command magic result as handler arguments
This commit is contained in:
parent
930bca0876
commit
286cf39c8a
51 changed files with 1380 additions and 804 deletions
|
|
@ -215,11 +215,11 @@ class TestBaseSession:
|
|||
return await make_request(bot, method)
|
||||
|
||||
session = CustomSession()
|
||||
assert not session.middlewares
|
||||
assert not session.middleware._middlewares
|
||||
|
||||
session.middleware(my_middleware)
|
||||
assert my_middleware in session.middlewares
|
||||
assert len(session.middlewares) == 1
|
||||
assert my_middleware in session.middleware
|
||||
assert len(session.middleware) == 1
|
||||
|
||||
async def test_use_middleware(self, bot: MockedBot):
|
||||
flag_before = False
|
||||
|
|
|
|||
|
|
@ -0,0 +1,45 @@
|
|||
from aiogram import Bot
|
||||
from aiogram.client.session.middlewares.base import (
|
||||
BaseRequestMiddleware,
|
||||
NextRequestMiddlewareType,
|
||||
)
|
||||
from aiogram.client.session.middlewares.manager import RequestMiddlewareManager
|
||||
from aiogram.methods import Response, TelegramMethod
|
||||
from aiogram.types import TelegramObject
|
||||
|
||||
|
||||
class TestMiddlewareManager:
|
||||
async def test_register(self):
|
||||
manager = RequestMiddlewareManager()
|
||||
|
||||
@manager
|
||||
async def middleware(handler, event, data):
|
||||
await handler(event, data)
|
||||
|
||||
assert middleware in manager._middlewares
|
||||
manager.unregister(middleware)
|
||||
assert middleware not in manager._middlewares
|
||||
|
||||
async def test_wrap_middlewares(self):
|
||||
manager = RequestMiddlewareManager()
|
||||
|
||||
class MyMiddleware(BaseRequestMiddleware):
|
||||
async def __call__(
|
||||
self,
|
||||
make_request: NextRequestMiddlewareType,
|
||||
bot: Bot,
|
||||
method: TelegramMethod[TelegramObject],
|
||||
) -> Response[TelegramObject]:
|
||||
return await make_request(bot, method)
|
||||
|
||||
manager.register(MyMiddleware())
|
||||
|
||||
@manager()
|
||||
@manager
|
||||
async def middleware(make_request, bot, method):
|
||||
return await make_request(bot, method)
|
||||
|
||||
async def target_call(bot, method, timeout: int = None):
|
||||
return timeout
|
||||
|
||||
assert await manager.wrap_middlewares(target_call, timeout=42)(None, None) == 42
|
||||
|
|
@ -641,13 +641,15 @@ class TestMessage:
|
|||
assert method.message_id == message.message_id
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"text,entities,correct",
|
||||
"text,entities,mode,expected_value",
|
||||
[
|
||||
["test", [MessageEntity(type="bold", offset=0, length=4)], True],
|
||||
["", [], False],
|
||||
["test", [MessageEntity(type="bold", offset=0, length=4)], "html", "<b>test</b>"],
|
||||
["test", [MessageEntity(type="bold", offset=0, length=4)], "md", "*test*"],
|
||||
["", [], "html", ""],
|
||||
["", [], "md", ""],
|
||||
],
|
||||
)
|
||||
def test_html_text(self, text, entities, correct):
|
||||
def test_html_text(self, text, entities, mode, expected_value):
|
||||
message = Message(
|
||||
message_id=42,
|
||||
chat=Chat(id=42, type="private"),
|
||||
|
|
@ -655,11 +657,4 @@ class TestMessage:
|
|||
text=text,
|
||||
entities=entities,
|
||||
)
|
||||
if correct:
|
||||
assert message.html_text
|
||||
assert message.md_text
|
||||
else:
|
||||
with pytest.raises(TypeError):
|
||||
assert message.html_text
|
||||
with pytest.raises(TypeError):
|
||||
assert message.md_text
|
||||
assert getattr(message, f"{mode}_text") == expected_value
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue