mirror of
https://github.com/nonebot/nonebot2.git
synced 2025-07-27 08:11:38 +00:00
✅ add matcher updater tests
This commit is contained in:
92
tests/plugins/matcher/matcher_process.py
Normal file
92
tests/plugins/matcher/matcher_process.py
Normal file
@ -0,0 +1,92 @@
|
||||
from nonebot import on_message
|
||||
from nonebot.matcher import Matcher
|
||||
from nonebot.adapters import Event, Message
|
||||
from nonebot.params import ArgStr, Received, EventMessage, LastReceived
|
||||
|
||||
test_handle = on_message()
|
||||
|
||||
|
||||
@test_handle.handle()
|
||||
async def handle():
|
||||
await test_handle.finish("send", at_sender=True)
|
||||
|
||||
|
||||
test_got = on_message()
|
||||
|
||||
|
||||
@test_got.got("key1", "prompt key1")
|
||||
@test_got.got("key2", "prompt key2")
|
||||
async def got(key1: str = ArgStr(), key2: str = ArgStr()):
|
||||
if key2 == "text":
|
||||
await test_got.reject("reject", at_sender=True)
|
||||
|
||||
assert key1 == "text"
|
||||
assert key2 == "text_next"
|
||||
|
||||
|
||||
test_receive = on_message()
|
||||
|
||||
|
||||
@test_receive.receive()
|
||||
@test_receive.receive("receive")
|
||||
async def receive(
|
||||
x: Event = Received("receive"), y: Event = LastReceived(), z: Event = Received()
|
||||
):
|
||||
assert str(x.get_message()) == "text"
|
||||
assert str(z.get_message()) == "text"
|
||||
assert x is y
|
||||
await test_receive.pause("pause", at_sender=True)
|
||||
|
||||
|
||||
test_combine = on_message()
|
||||
|
||||
|
||||
@test_combine.got("a")
|
||||
@test_combine.receive()
|
||||
@test_combine.got("b")
|
||||
async def combine(a: str = ArgStr(), b: str = ArgStr(), r: Event = Received()):
|
||||
if a == "text":
|
||||
await test_combine.reject_arg("a")
|
||||
elif b == "text":
|
||||
await test_combine.reject_arg("b")
|
||||
elif str(r.get_message()) == "text":
|
||||
await test_combine.reject_receive()
|
||||
|
||||
assert a == "text_next"
|
||||
assert b == "text_next"
|
||||
assert str(r.get_message()) == "text_next"
|
||||
|
||||
|
||||
test_preset = on_message()
|
||||
|
||||
|
||||
@test_preset.handle()
|
||||
async def preset(matcher: Matcher, message: Message = EventMessage()):
|
||||
matcher.set_arg("a", message)
|
||||
|
||||
|
||||
@test_preset.got("a")
|
||||
@test_preset.got("b")
|
||||
async def reject_preset(a: str = ArgStr(), b: str = ArgStr()):
|
||||
if a == "text":
|
||||
await test_preset.reject_arg("a")
|
||||
|
||||
assert a == "text_next"
|
||||
assert b == "text"
|
||||
|
||||
|
||||
test_overload = on_message()
|
||||
|
||||
|
||||
class FakeEvent(Event):
|
||||
...
|
||||
|
||||
|
||||
@test_overload.got("a")
|
||||
async def overload(event: FakeEvent):
|
||||
await test_overload.reject_arg("a")
|
||||
|
||||
|
||||
@test_overload.handle()
|
||||
async def finish():
|
||||
await test_overload.finish()
|
Reference in New Issue
Block a user