nonebot2/tests/test_adapters/test_message.py

119 lines
3.5 KiB
Python
Raw Normal View History

2022-01-30 00:05:01 +08:00
from pydantic import ValidationError, parse_obj_as
from utils import make_fake_message
2022-01-29 23:39:13 +08:00
def test_segment_add():
Message = make_fake_message()
MessageSegment = Message.get_segment_class()
assert MessageSegment.text("text") + MessageSegment.text("text") == Message(
[MessageSegment.text("text"), MessageSegment.text("text")]
)
assert MessageSegment.text("text") + "text" == Message(
[MessageSegment.text("text"), MessageSegment.text("text")]
)
assert MessageSegment.text("text") + Message(
[MessageSegment.text("text")]
) == Message([MessageSegment.text("text"), MessageSegment.text("text")])
2022-01-29 23:39:13 +08:00
assert "text" + MessageSegment.text("text") == Message(
[MessageSegment.text("text"), MessageSegment.text("text")]
)
2022-01-30 00:05:01 +08:00
def test_segment_validate():
Message = make_fake_message()
MessageSegment = Message.get_segment_class()
assert parse_obj_as(
MessageSegment, {"type": "text", "data": {"text": "text"}}
) == MessageSegment.text("text")
try:
parse_obj_as(MessageSegment, "some str")
assert False
except ValidationError:
assert True
2022-01-29 23:39:13 +08:00
def test_message_add():
Message = make_fake_message()
2022-01-29 23:39:13 +08:00
MessageSegment = Message.get_segment_class()
assert Message([MessageSegment.text("text")]) + MessageSegment.text(
"text"
) == Message([MessageSegment.text("text"), MessageSegment.text("text")])
2022-01-29 23:39:13 +08:00
assert Message([MessageSegment.text("text")]) + "text" == Message(
[MessageSegment.text("text"), MessageSegment.text("text")]
)
2022-01-29 23:39:13 +08:00
assert Message([MessageSegment.text("text")]) + Message(
[MessageSegment.text("text")]
) == Message([MessageSegment.text("text"), MessageSegment.text("text")])
2022-01-29 23:39:13 +08:00
msg = Message([MessageSegment.text("text")])
msg += MessageSegment.text("text")
assert msg == Message([MessageSegment.text("text"), MessageSegment.text("text")])
2022-01-29 23:39:13 +08:00
def test_message_getitem():
Message = make_fake_message()
MessageSegment = Message.get_segment_class()
message = Message(
[
MessageSegment.text("test"),
MessageSegment.image("test2"),
MessageSegment.image("test3"),
MessageSegment.text("test4"),
]
)
assert message[0] == MessageSegment.text("test")
assert message[0:2] == Message(
[MessageSegment.text("test"), MessageSegment.image("test2")]
)
assert message["image"] == Message(
[MessageSegment.image("test2"), MessageSegment.image("test3")]
)
assert message["image", 0] == MessageSegment.image("test2")
assert message["image", 0:2] == message["image"]
assert message.index(message[0]) == 0
assert message.index("image") == 1
assert message.get("image") == message["image"]
assert message.get("image", 114514) == message["image"]
assert message.get("image", 1) == Message([message["image", 0]])
assert message.count("image") == 2
2022-01-30 00:05:01 +08:00
def test_message_validate():
Message = make_fake_message()
MessageSegment = Message.get_segment_class()
assert parse_obj_as(Message, "text") == Message([MessageSegment.text("text")])
assert parse_obj_as(Message, {"type": "text", "data": {"text": "text"}}) == Message(
[MessageSegment.text("text")]
)
assert parse_obj_as(
Message, [{"type": "text", "data": {"text": "text"}}]
) == Message([MessageSegment.text("text")])
try:
parse_obj_as(Message, object())
assert False
except ValidationError:
assert True