mirror of
https://github.com/HKUDS/nanobot.git
synced 2026-04-26 21:05:49 +00:00
test: add regression test for oversized stream-end splitting
Made-with: Cursor
This commit is contained in:
parent
09ec9991e1
commit
bdec2637ae
@ -385,6 +385,32 @@ async def test_send_delta_stream_end_treats_not_modified_as_success() -> None:
|
|||||||
assert "123" not in channel._stream_bufs
|
assert "123" not in channel._stream_bufs
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.asyncio
|
||||||
|
async def test_send_delta_stream_end_splits_oversized_reply() -> None:
|
||||||
|
"""Final streamed reply exceeding Telegram limit is split into chunks."""
|
||||||
|
from nanobot.channels.telegram import TELEGRAM_MAX_MESSAGE_LEN
|
||||||
|
|
||||||
|
channel = TelegramChannel(
|
||||||
|
TelegramConfig(enabled=True, token="123:abc", allow_from=["*"]),
|
||||||
|
MessageBus(),
|
||||||
|
)
|
||||||
|
channel._app = _FakeApp(lambda: None)
|
||||||
|
channel._app.bot.edit_message_text = AsyncMock()
|
||||||
|
channel._app.bot.send_message = AsyncMock(return_value=SimpleNamespace(message_id=99))
|
||||||
|
|
||||||
|
oversized = "x" * (TELEGRAM_MAX_MESSAGE_LEN + 500)
|
||||||
|
channel._stream_bufs["123"] = _StreamBuf(text=oversized, message_id=7, last_edit=0.0)
|
||||||
|
|
||||||
|
await channel.send_delta("123", "", {"_stream_end": True})
|
||||||
|
|
||||||
|
channel._app.bot.edit_message_text.assert_called_once()
|
||||||
|
edit_text = channel._app.bot.edit_message_text.call_args.kwargs.get("text", "")
|
||||||
|
assert len(edit_text) <= TELEGRAM_MAX_MESSAGE_LEN
|
||||||
|
|
||||||
|
channel._app.bot.send_message.assert_called_once()
|
||||||
|
assert "123" not in channel._stream_bufs
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_send_delta_new_stream_id_replaces_stale_buffer() -> None:
|
async def test_send_delta_new_stream_id_replaces_stale_buffer() -> None:
|
||||||
channel = TelegramChannel(
|
channel = TelegramChannel(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user