|
3 | 3 | import pytest |
4 | 4 | from nonebug import App |
5 | 5 | from pytest_mock import MockerFixture |
6 | | -from nonebot import get_driver, get_adapter |
7 | 6 | from nonebot.adapters.qq import Bot as QQBot |
8 | 7 | from nonebot.adapters.qq import Adapter as QQAdapter |
9 | 8 | from nonebot.adapters.satori import Bot as SatoriBot |
10 | 9 | from nonebot.adapters.onebot.v11 import MessageSegment |
| 10 | +from nonebot import get_driver, on_command, get_adapter |
11 | 11 | from nonebot.adapters.onebot.v11 import Bot as Onebot11Bot |
12 | 12 | from nonebot.adapters.onebot.v12 import Bot as Onebot12Bot |
13 | 13 | from nonebot.adapters.satori import Adapter as SatoriAdapter |
14 | 14 | from nonebot.adapters.onebot.v11 import Adapter as Onebot11Adapter |
15 | 15 | from nonebot.adapters.onebot.v12 import Adapter as Onebot12Adapter |
16 | 16 | from nonebot.adapters.satori.models import User, Guild, Channel, PageResult, ChannelType |
17 | 17 |
|
18 | | -from tests.fake import fake_satori_bot_params |
| 18 | +from tests.fake import fake_satori_bot_params, fake_message_event_guild |
19 | 19 |
|
20 | 20 |
|
21 | 21 | @pytest.mark.asyncio() |
@@ -109,3 +109,37 @@ async def test_enable(app: App, mocker: MockerFixture): |
109 | 109 | driver = get_driver() |
110 | 110 | driver._bot_connection_hook.clear() |
111 | 111 | driver._bot_disconnection_hook.clear() |
| 112 | + |
| 113 | + |
| 114 | +@pytest.mark.asyncio() |
| 115 | +async def test_switch(app: App, mocker: MockerFixture): |
| 116 | + from nonebot.adapters.qq import Message |
| 117 | + |
| 118 | + from nonebot_plugin_alconna import Target, UniMessage, SupportScope |
| 119 | + |
| 120 | + matcher = on_command("test_switch", priority=5) |
| 121 | + |
| 122 | + @matcher.handle() |
| 123 | + async def h_(): |
| 124 | + await UniMessage.text("hello").send() |
| 125 | + target = Target("123", private=True, scope=SupportScope.qq_client) |
| 126 | + await UniMessage.text("world").send(target=target) |
| 127 | + |
| 128 | + async with app.test_matcher(matcher) as ctx: |
| 129 | + qq_adapter = get_adapter(QQAdapter) |
| 130 | + qq_bot = ctx.create_bot(base=QQBot, adapter=qq_adapter, self_id="1", bot_info=None) |
| 131 | + |
| 132 | + onebot11_adapter = get_adapter(Onebot11Adapter) |
| 133 | + _ = ctx.create_bot(base=Onebot11Bot, adapter=onebot11_adapter, self_id="2") |
| 134 | + |
| 135 | + event = fake_message_event_guild(user_id="11111", message=Message("/test_switch")) |
| 136 | + ctx.receive_event(qq_bot, event) |
| 137 | + ctx.should_call_send(event, Message("hello")) |
| 138 | + ctx.should_call_api( |
| 139 | + "send_msg", |
| 140 | + { |
| 141 | + "message_type": "private", |
| 142 | + "user_id": 123, |
| 143 | + "message": [MessageSegment(type="text", data={"text": "world"})], |
| 144 | + }, |
| 145 | + ) |
0 commit comments