mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
Add After.goto coverage for scene middleware context (#1687)
This commit is contained in:
parent
33cf9b9a99
commit
f764202e47
1 changed files with 47 additions and 1 deletions
|
|
@ -5,7 +5,7 @@ from typing import Any
|
||||||
from aiogram import BaseMiddleware, Dispatcher
|
from aiogram import BaseMiddleware, Dispatcher
|
||||||
from aiogram.enums import ChatType
|
from aiogram.enums import ChatType
|
||||||
from aiogram.filters import CommandStart
|
from aiogram.filters import CommandStart
|
||||||
from aiogram.fsm.scene import Scene, SceneRegistry, on
|
from aiogram.fsm.scene import After, Scene, SceneRegistry, on
|
||||||
from aiogram.types import Chat, Message, TelegramObject, Update, User
|
from aiogram.types import Chat, Message, TelegramObject, Update, User
|
||||||
from tests.mocked_bot import MockedBot
|
from tests.mocked_bot import MockedBot
|
||||||
|
|
||||||
|
|
@ -35,6 +35,12 @@ class StartScene(Scene, state="start"):
|
||||||
await self.wizard.goto(TargetScene)
|
await self.wizard.goto(TargetScene)
|
||||||
|
|
||||||
|
|
||||||
|
class StartSceneWithAfter(Scene, state="start_with_after"):
|
||||||
|
@on.message(after=After.goto(TargetScene))
|
||||||
|
async def goto_target_with_after(self, message: Message) -> None:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
async def test_scene_goto_preserves_message_middleware_data(bot: MockedBot) -> None:
|
async def test_scene_goto_preserves_message_middleware_data(bot: MockedBot) -> None:
|
||||||
dp = Dispatcher()
|
dp = Dispatcher()
|
||||||
registry = SceneRegistry(dp)
|
registry = SceneRegistry(dp)
|
||||||
|
|
@ -58,3 +64,43 @@ async def test_scene_goto_preserves_message_middleware_data(bot: MockedBot) -> N
|
||||||
await dp.feed_update(bot, update)
|
await dp.feed_update(bot, update)
|
||||||
|
|
||||||
assert TargetScene.entered_with_context == "context from middleware"
|
assert TargetScene.entered_with_context == "context from middleware"
|
||||||
|
|
||||||
|
|
||||||
|
async def test_scene_after_goto_preserves_message_middleware_data(bot: MockedBot) -> None:
|
||||||
|
dp = Dispatcher()
|
||||||
|
registry = SceneRegistry(dp)
|
||||||
|
registry.add(StartSceneWithAfter, TargetScene)
|
||||||
|
dp.message.register(StartSceneWithAfter.as_handler(), CommandStart())
|
||||||
|
dp.message.middleware(TestContextMiddleware())
|
||||||
|
|
||||||
|
TargetScene.entered_with_context = None
|
||||||
|
|
||||||
|
await dp.feed_update(
|
||||||
|
bot,
|
||||||
|
Update(
|
||||||
|
update_id=1,
|
||||||
|
message=Message(
|
||||||
|
message_id=1,
|
||||||
|
date=datetime.now(),
|
||||||
|
chat=Chat(id=42, type=ChatType.PRIVATE),
|
||||||
|
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||||
|
text="/start",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
await dp.feed_update(
|
||||||
|
bot,
|
||||||
|
Update(
|
||||||
|
update_id=2,
|
||||||
|
message=Message(
|
||||||
|
message_id=2,
|
||||||
|
date=datetime.now(),
|
||||||
|
chat=Chat(id=42, type=ChatType.PRIVATE),
|
||||||
|
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||||
|
text="go",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
assert TargetScene.entered_with_context == "context from middleware"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue