@@ -226,6 +226,39 @@ def test_merge_pending_message_event_merges_text_and_photo_followups():
226226 assert merged .media_types == ["image/png" ]
227227
228228
229+ def test_merge_pending_message_event_promotes_document_followups_over_text ():
230+ pending = {}
231+ source = SessionSource (
232+ platform = Platform .TELEGRAM ,
233+ chat_id = "12345" ,
234+ chat_type = "dm" ,
235+ user_id = "u1" ,
236+ )
237+ session_key = build_session_key (source )
238+
239+ text_event = MessageEvent (
240+ text = "please review this" ,
241+ message_type = MessageType .TEXT ,
242+ source = source ,
243+ )
244+ document_event = MessageEvent (
245+ text = "" ,
246+ message_type = MessageType .DOCUMENT ,
247+ source = source ,
248+ media_urls = ["/tmp/report.pdf" ],
249+ media_types = ["application/pdf" ],
250+ )
251+
252+ merge_pending_message_event (pending , session_key , text_event , merge_text = True )
253+ merge_pending_message_event (pending , session_key , document_event , merge_text = True )
254+
255+ merged = pending [session_key ]
256+ assert merged .message_type == MessageType .DOCUMENT
257+ assert merged .text == "please review this"
258+ assert merged .media_urls == ["/tmp/report.pdf" ]
259+ assert merged .media_types == ["application/pdf" ]
260+
261+
229262@pytest .mark .asyncio
230263async def test_recent_telegram_text_followup_is_queued_without_interrupt ():
231264 runner = _make_runner ()
0 commit comments