8c935981bb
Co-authored-by: whatevertogo <whatevertogo@users.noreply.github.com>
60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
from unittest.mock import AsyncMock
|
|
|
|
import pytest
|
|
|
|
import astrbot.core.message.components as Comp
|
|
from astrbot.core.message.message_event_result import MessageChain
|
|
from astrbot.core.pipeline.respond.stage import RespondStage
|
|
from astrbot.core.platform.sources.aiocqhttp.aiocqhttp_message_event import (
|
|
AiocqhttpMessageEvent,
|
|
)
|
|
|
|
|
|
def test_poke_to_dict_matches_onebot_v11_segment_format():
|
|
poke = Comp.Poke(type="126", id=2003)
|
|
assert poke.toDict() == {
|
|
"type": "poke",
|
|
"data": {"type": "126", "id": "2003"},
|
|
}
|
|
|
|
|
|
def test_poke_to_dict_keeps_legacy_qq_compatible():
|
|
poke = Comp.Poke(type="poke", qq=2916963017)
|
|
assert poke.toDict() == {
|
|
"type": "poke",
|
|
"data": {"type": "126", "id": "2916963017"},
|
|
}
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_respond_stage_treats_poke_with_target_as_non_empty():
|
|
stage = RespondStage()
|
|
chain = [Comp.Poke(type="126", id=2003)]
|
|
assert await stage._is_empty_message_chain(chain) is False
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_aiocqhttp_parse_json_outputs_standard_poke_data():
|
|
chain = MessageChain([Comp.Poke(type="126", id=2003)])
|
|
data = await AiocqhttpMessageEvent._parse_onebot_json(chain)
|
|
assert data == [{"type": "poke", "data": {"type": "126", "id": "2003"}}]
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_aiocqhttp_send_message_dispatches_onebot_v11_poke_payload():
|
|
bot = AsyncMock()
|
|
chain = MessageChain([Comp.Poke(type="126", id=2003)])
|
|
|
|
await AiocqhttpMessageEvent.send_message(
|
|
bot=bot,
|
|
message_chain=chain,
|
|
event=None,
|
|
is_group=True,
|
|
session_id="123456",
|
|
)
|
|
|
|
bot.send_group_msg.assert_awaited_once_with(
|
|
group_id=123456,
|
|
message=[{"type": "poke", "data": {"type": "126", "id": "2003"}}],
|
|
)
|