Sync telesrv 172a86e (feat(bot-demo): echo ephemeral group commands). Skipped telesrv docs changes per public sync rules.
63 lines
2.1 KiB
Python
63 lines
2.1 KiB
Python
import unittest
|
|
from types import SimpleNamespace
|
|
|
|
import echo
|
|
|
|
|
|
class FakeBot:
|
|
def __init__(self):
|
|
self.calls = []
|
|
|
|
async def send_message(self, **kwargs):
|
|
self.calls.append(kwargs)
|
|
return SimpleNamespace(message_id=0, ephemeral_message_id=88)
|
|
|
|
|
|
class FakeMessage:
|
|
def __init__(self, *, text="hello", ephemeral_id=None):
|
|
self.text = text
|
|
self.caption = None
|
|
self.chat = SimpleNamespace(id=-1000000000002)
|
|
self.from_user = SimpleNamespace(id=1780243200)
|
|
self.ephemeral_message_id = ephemeral_id
|
|
self.model_extra = {}
|
|
self.bot = FakeBot()
|
|
self.answers = []
|
|
|
|
async def answer(self, text):
|
|
self.answers.append(text)
|
|
return SimpleNamespace(message_id=1, ephemeral_message_id=None)
|
|
|
|
|
|
class EchoTest(unittest.IsolatedAsyncioTestCase):
|
|
async def test_ephemeral_echo_uses_receiver_and_transient_reply(self):
|
|
message = FakeMessage(text="/private@TetrisBot", ephemeral_id=77)
|
|
|
|
await echo.send_echo(message, "aiogram echo: ", "ephemeral echo: ")
|
|
|
|
self.assertEqual(message.answers, [])
|
|
self.assertEqual(len(message.bot.calls), 1)
|
|
call = message.bot.calls[0]
|
|
self.assertEqual(call["chat_id"], -1000000000002)
|
|
self.assertEqual(call["text"], "ephemeral echo: /private@TetrisBot")
|
|
self.assertEqual(call["receiver_user_id"], 1780243200)
|
|
self.assertEqual(call["reply_parameters"].ephemeral_message_id, 77)
|
|
|
|
async def test_normal_echo_stays_on_standard_answer_path(self):
|
|
message = FakeMessage()
|
|
|
|
await echo.send_echo(message, "aiogram echo: ", "ephemeral echo: ")
|
|
|
|
self.assertEqual(message.answers, ["aiogram echo: hello"])
|
|
self.assertEqual(message.bot.calls, [])
|
|
|
|
def test_extra_field_fallback_and_invalid_values(self):
|
|
message = FakeMessage()
|
|
message.model_extra = {"ephemeral_message_id": 66}
|
|
self.assertEqual(echo.ephemeral_message_id(message), 66)
|
|
message.model_extra = {"ephemeral_message_id": True}
|
|
self.assertIsNone(echo.ephemeral_message_id(message))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|