fix(telegram): final message waits for the draft push in flight

This commit is contained in:
hh
2026-08-28 18:32:45 +02:00
parent 0110cbd1cc
commit 7b0c61c18e
2 changed files with 18 additions and 1 deletions
+7
View File
@@ -33,6 +33,7 @@ class FakeBot:
self.reactions: list[tuple[int, list[Any]]] = []
self.fail_sends = 0
self.reject_html = False
self.order: list[tuple[str, int | None]] = []
self._message_id = 100
self.session = SimpleNamespace(close=self._close)
@@ -64,6 +65,7 @@ class FakeBot:
message="Bad Request: can't parse entities",
)
self._message_id += 1
self.order.append(("message", message_thread_id))
self.sent.append(
{
"chat_id": chat_id,
@@ -77,7 +79,9 @@ class FakeBot:
return SimpleNamespace(message_id=self._message_id)
async def send_message_draft(self, **kwargs: Any) -> bool:
await asyncio.sleep(0.08)
self.drafts.append(kwargs)
self.order.append(("draft", kwargs.get("message_thread_id")))
return True
async def create_forum_topic(self, chat_id, name, **_: Any) -> Any:
@@ -244,6 +248,9 @@ async def test_general_is_master_and_reply_has_no_thread(stack: Stack) -> None:
)
assert master is not None and master.kind == "master"
assert stack.bot.drafts and stack.bot.drafts[0]["chat_id"] == USER
await asyncio.sleep(0.2)
final = max(i for i, o in enumerate(stack.bot.order) if o[0] == "message")
assert all(o[0] != "draft" for o in stack.bot.order[final:])
rows = await stack.world.conversations.queue.recent(master.id)
assert [r.origin for r in rows] == ["telegram"]