diff --git a/tests/adapters/test_template.py b/tests/adapters/test_template.py new file mode 100644 index 00000000..3dbef541 --- /dev/null +++ b/tests/adapters/test_template.py @@ -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]" diff --git a/tests/utils.py b/tests/utils.py index d516665f..a8d0c0ed 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -18,14 +18,18 @@ def make_fake_message() -> Type["Message"]: return FakeMessage def __str__(self) -> str: - return self.data["text"] + return self.data["text"] if self.type == "text" else f"[fake:{self.type}]" @classmethod def text(cls, text: str): return cls("text", {"text": text}) + @classmethod + def image(cls, url: str): + return cls("image", {"url": url}) + def is_text(self) -> bool: - return True + return self.type == "text" class FakeMessage(Message): @classmethod