aiogram/tests/test_dispatcher/test_middlewares/test_user_context.py
Alex Root Junior 057478621b
Added full support of Bot API 7.2 (#1444)
* Added base support of Bot API 7.2

* Added base support of Bot API 7.2

* Fixing tests and content types for Telegram Bot API 7.2 update (#1453)

* Fixing tests and content types for Telegram Bot API 7.2

* Adding changelog for 1453 PR

* Fixes + coverage

* Replace `BusinessConnection.date` type

* Reformat code

* Refactor UserContextMiddleware to use EventContext class

This update significantly refactors UserContextMiddleware to leverage a new class, EventContext. Instead of resolving event context as a tuple, it now produces an instance of EventContext. Additional adjustments include supporting a business connection ID for event context identification and facilitating backwards compatibility. Tests and other files were also updated accordingly for these changes.

* Cover FSM key builder (business_connection_id

* Added changelog

---------

Co-authored-by: RoLOQ <roman.fedunn@gmail.com>
2024-04-22 13:48:49 +03:00

43 lines
1.3 KiB
Python

from unittest.mock import patch
import pytest
from aiogram.dispatcher.middlewares.user_context import (
EventContext,
UserContextMiddleware,
)
from aiogram.types import Chat, Update, User
async def next_handler(*args, **kwargs):
pass
class TestUserContextMiddleware:
async def test_unexpected_event_type(self):
with pytest.raises(RuntimeError):
await UserContextMiddleware()(next_handler, object(), {})
async def test_call(self):
middleware = UserContextMiddleware()
data = {}
chat = Chat(id=1, type="private", title="Test")
user = User(id=2, first_name="Test", is_bot=False)
thread_id = 3
with patch.object(
UserContextMiddleware,
"resolve_event_context",
return_value=EventContext(user=user, chat=chat, thread_id=3),
):
await middleware(next_handler, Update(update_id=42), data)
event_context = data["event_context"]
assert isinstance(event_context, EventContext)
assert event_context.chat is chat
assert event_context.user is user
assert event_context.thread_id == thread_id
assert data["event_chat"] is chat
assert data["event_from_user"] is user
assert data["event_thread_id"] == thread_id