From f4395d77d7ea4f0298665f3eb371c40d67f71817 Mon Sep 17 00:00:00 2001 From: Mix <32300164+mnixry@users.noreply.github.com> Date: Sun, 6 Feb 2022 18:55:19 +0800 Subject: [PATCH] :white_check_mark: Add test to prove the fix is valid --- tests/test_adapters/test_template.py | 26 ++++++++++++++++++++++---- tests/utils.py | 6 +++--- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/tests/test_adapters/test_template.py b/tests/test_adapters/test_template.py index 3dbef541..1814b04d 100644 --- a/tests/test_adapters/test_template.py +++ b/tests/test_adapters/test_template.py @@ -1,7 +1,15 @@ from utils import make_fake_message -def test_message_template(): +def test_template_basis(): + from nonebot.adapters import MessageTemplate + + template = MessageTemplate("{key:.3%}") + formatted = template.format(key=0.123456789) + assert formatted == "12.346%" + + +def test_template_message(): from nonebot.adapters import MessageTemplate Message = make_fake_message() @@ -12,6 +20,16 @@ def test_message_template(): 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]" + try: + template.add_format_spec(custom) + except ValueError: + pass + else: + raise AssertionError("Should raise ValueError") + + format_args = {"a": "custom", "b": "text", "c": "https://example.com/test"} + formatted = template.format(**format_args) + + assert template.format_map(format_args) == formatted + assert formatted.extract_plain_text() == "custom-custom!text" + assert str(formatted) == "custom-custom!text[fake:image]" diff --git a/tests/utils.py b/tests/utils.py index e82ad7d9..ef54b69b 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -21,9 +21,9 @@ def make_fake_message() -> Type["Message"]: def text(cls, text: str): return cls("text", {"text": text}) - @classmethod - def image(cls, url: str): - return cls("image", {"url": url}) + @staticmethod + def image(url: str): + return FakeMessageSegment("image", {"url": url}) def is_text(self) -> bool: return self.type == "text"