2023-04-22 19:35:41 +03:00
|
|
|
from unittest.mock import patch
|
|
|
|
|
|
2021-09-22 00:52:38 +03:00
|
|
|
import pytest
|
|
|
|
|
|
2024-04-22 13:48:49 +03:00
|
|
|
from aiogram.dispatcher.middlewares.user_context import (
|
|
|
|
|
EventContext,
|
|
|
|
|
UserContextMiddleware,
|
|
|
|
|
)
|
|
|
|
|
from aiogram.types import Chat, Update, User
|
2021-09-22 00:52:38 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
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(), {})
|
2023-04-22 19:35:41 +03:00
|
|
|
|
|
|
|
|
async def test_call(self):
|
|
|
|
|
middleware = UserContextMiddleware()
|
|
|
|
|
data = {}
|
2024-04-22 13:48:49 +03:00
|
|
|
|
|
|
|
|
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),
|
|
|
|
|
):
|
2023-04-22 19:35:41 +03:00
|
|
|
await middleware(next_handler, Update(update_id=42), data)
|
|
|
|
|
|
2024-04-22 13:48:49 +03:00
|
|
|
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
|