sh4nks 10 лет назад
Родитель
Сommit
4fddeeab53
2 измененных файлов с 32 добавлено и 2 удалено
  1. 4 2
      flaskbb/utils/markup.py
  2. 28 0
      tests/unit/utils/test_markup.py

+ 4 - 2
flaskbb/utils/markup.py

@@ -25,7 +25,9 @@ def collect_emojis():
         return emojis
 
     for emoji in os.listdir(full_path):
-        emojis[emoji.split(".")[0]] = emoji
+        name, ending = emoji.split(".")
+        if ending in ["png", "gif", "jpg", "jpeg"]:
+            emojis[name] = emoji
 
     return emojis
 
@@ -61,7 +63,7 @@ class FlaskBBRenderer(mistune.Renderer):
         def userify(match):
             value = match.group(1)
             user = "<a href='{url}'>@{user}</a>".format(
-                url=url_for("user.profile", username=value),
+                url=url_for("user.profile", username=value, _external=False),
                 user=value
             )
             return user

+ 28 - 0
tests/unit/utils/test_markup.py

@@ -0,0 +1,28 @@
+from flaskbb.utils.markup import collect_emojis, EMOJIS, markdown
+
+
+def test_collect_emojis():
+    assert collect_emojis() == EMOJIS
+
+
+def test_custom_renderer():
+    # custom paragraph
+    p_expected = "<p><a href='/user/sh4nks'>@sh4nks</a> is :developing: <img class='emoji' alt='flaskbb' src='http://localhost:5000/static/emoji/flaskbb.png' />.</p>\n"
+    p_plain = "@sh4nks is :developing: :flaskbb:."
+    assert markdown.render(p_plain) == p_expected
+
+    # custom block code with pygments highlighting
+    b_expected = """\n<pre><code>print("Hello World")</code></pre>\n"""
+    b_expected_lang = """<div class="highlight"><pre><span class="k">print</span><span class="p">(</span><span class="s">&quot;Hello World&quot;</span><span class="p">)</span>\n</pre></div>\n"""
+    b_plain = """
+```
+print("Hello World")
+```
+"""
+    b_plain_lang = """
+```python
+print("Hello World")
+```
+"""
+    assert markdown.render(b_plain) == b_expected
+    assert markdown.render(b_plain_lang) == b_expected_lang