add tests for message template

This commit is contained in:
Mix 2022-01-02 14:29:04 +08:00
parent 43938a004e
commit be1915381e
2 changed files with 23 additions and 2 deletions

View File

@ -0,0 +1,17 @@
from utils import make_fake_message
def test_message_template():
from nonebot.adapters import MessageTemplate
Message = make_fake_message()
template = MessageTemplate("{a:custom}{b:text}{c:image}", Message)
@template.add_format_spec
def custom(input: str) -> str:
return input + "-custom!"
formatted = template.format(a="test", b="test", c="https://example.com/test")
assert formatted.extract_plain_text() == "test-custom!test"
assert str(formatted) == "test-custom!test[fake:image]"

View File

@ -18,14 +18,18 @@ def make_fake_message() -> Type["Message"]:
return FakeMessage return FakeMessage
def __str__(self) -> str: def __str__(self) -> str:
return self.data["text"] return self.data["text"] if self.type == "text" else f"[fake:{self.type}]"
@classmethod @classmethod
def text(cls, text: str): def text(cls, text: str):
return cls("text", {"text": text}) return cls("text", {"text": text})
@classmethod
def image(cls, url: str):
return cls("image", {"url": url})
def is_text(self) -> bool: def is_text(self) -> bool:
return True return self.type == "text"
class FakeMessage(Message): class FakeMessage(Message):
@classmethod @classmethod