aboutsummaryrefslogtreecommitdiffstats
path: root/_pytest
diff options
context:
space:
mode:
authorTrygve Aaberge <trygveaa@gmail.com>2023-07-06 22:13:35 +0200
committerTrygve Aaberge <trygveaa@gmail.com>2023-07-07 01:48:31 +0200
commit74da30342e8d328fc085d2158e37afda3b908f2c (patch)
tree6c3dd5fd96d56a6cb7653e665ba4c87ee202078b /_pytest
parent857a42dee093ef87723d0e214a29bc346a29a595 (diff)
downloadwee-slack-74da30342e8d328fc085d2158e37afda3b908f2c.tar.gz
Support and use rich_text blocks for message content
Instead of just using the text field of a message, use the rich_text blocks to format the message. The main reason for doing this was that messages that include images suddenly started just having "This message contains interactive elements." in the text field. There are some other benefits as well: - It fixes some bugs with multiple formatting styles not being applied correctly. - It fixes links in code blocks not being rendered verbatim (but with text and url, like outside code blocks). - It fixes code blocks sometimes having newlines after/before ``` and sometimes not, depending on how the message was sent. It looks like messages with images are now back to having the proper text in the text field (for new messages), so this change isn't necessary to fix that after all (except for for messages in the history sent in the last couple of days), but since it fixes other issues as well, it's best to keep it. There is one bug left when inline code blocks contains links. Then there will be ` characters before and after the link, which shouldn't be there, but I'll leave fixing this for later. Fixes #354, fixes #550, fixes #893
Diffstat (limited to '_pytest')
-rw-r--r--_pytest/test_render_blocks.py247
1 files changed, 247 insertions, 0 deletions
diff --git a/_pytest/test_render_blocks.py b/_pytest/test_render_blocks.py
new file mode 100644
index 0000000..258fc49
--- /dev/null
+++ b/_pytest/test_render_blocks.py
@@ -0,0 +1,247 @@
+from __future__ import print_function, unicode_literals
+
+import pytest
+
+import wee_slack
+
+
+@pytest.mark.parametrize(
+ "case",
+ [
+ {
+ "blocks": [
+ {
+ "type": "rich_text",
+ "block_id": "dhGA",
+ "elements": [
+ {
+ "type": "rich_text_section",
+ "elements": [
+ {"type": "text", "text": "normal "},
+ {
+ "type": "text",
+ "text": "bold",
+ "style": {"bold": True},
+ },
+ {"type": "text", "text": " "},
+ {
+ "type": "text",
+ "text": "italic",
+ "style": {"italic": True},
+ },
+ {"type": "text", "text": " "},
+ {
+ "type": "text",
+ "text": "strikethrough",
+ "style": {"strike": True},
+ },
+ {"type": "text", "text": " "},
+ {
+ "type": "text",
+ "text": "bold-italic-strikethrough",
+ "style": {
+ "bold": True,
+ "italic": True,
+ "strike": True,
+ },
+ },
+ {"type": "text", "text": " "},
+ {
+ "type": "link",
+ "url": "https://vg.no",
+ "text": "link",
+ },
+ {"type": "text", "text": "\n"},
+ ],
+ },
+ {
+ "type": "rich_text_list",
+ "elements": [
+ {
+ "type": "rich_text_section",
+ "elements": [{"type": "text", "text": "number"}],
+ },
+ {
+ "type": "rich_text_section",
+ "elements": [{"type": "text", "text": "list"}],
+ },
+ ],
+ "style": "ordered",
+ "indent": 0,
+ "border": 0,
+ },
+ {
+ "type": "rich_text_quote",
+ "elements": [
+ {"type": "text", "text": "some quote\nmore quote"}
+ ],
+ },
+ {
+ "type": "rich_text_section",
+ "elements": [
+ {
+ "type": "text",
+ "text": "inline code",
+ "style": {"code": True},
+ },
+ {"type": "text", "text": "\n"},
+ ],
+ },
+ {
+ "type": "rich_text_preformatted",
+ "elements": [
+ {"type": "text", "text": "block code\nmore code"}
+ ],
+ "border": 0,
+ },
+ {
+ "type": "rich_text_section",
+ "elements": [
+ {"type": "user", "user_id": "U407ABLLW"},
+ {"type": "text", "text": ": "},
+ {
+ "type": "emoji",
+ "name": "open_mouth",
+ "unicode": "1f62e",
+ },
+ ],
+ },
+ ],
+ }
+ ],
+ "rendered": [
+ "normal <[color bold]>*bold*<[color -bold]> <[color italic]>_italic_<[color -italic]> ~strikethrough~ <[color bold]><[color italic]>*_~bold-italic-strikethrough~_*<[color -bold]><[color -italic]> https://vg.no (link)",
+ "1. number",
+ "2. list",
+ "> some quote",
+ "> more quote",
+ "`inline code`",
+ "```\nblock code\nmore code\n```",
+ "@alice: :open_mouth:",
+ ],
+ },
+ {
+ "blocks": [
+ {
+ "type": "rich_text",
+ "block_id": "D=pkP",
+ "elements": [
+ {
+ "type": "rich_text_list",
+ "elements": [
+ {
+ "type": "rich_text_section",
+ "elements": [{"type": "text", "text": "number"}],
+ }
+ ],
+ "style": "ordered",
+ "indent": 0,
+ "border": 0,
+ },
+ {
+ "type": "rich_text_list",
+ "elements": [
+ {
+ "type": "rich_text_section",
+ "elements": [{"type": "text", "text": "list"}],
+ }
+ ],
+ "style": "ordered",
+ "indent": 1,
+ "border": 0,
+ },
+ {
+ "type": "rich_text_list",
+ "elements": [
+ {
+ "type": "rich_text_section",
+ "elements": [{"type": "text", "text": "third"}],
+ }
+ ],
+ "style": "ordered",
+ "indent": 2,
+ "border": 0,
+ },
+ {
+ "type": "rich_text_list",
+ "elements": [
+ {
+ "type": "rich_text_section",
+ "elements": [
+ {"type": "text", "text": "end number list"}
+ ],
+ }
+ ],
+ "style": "ordered",
+ "indent": 0,
+ "offset": 1,
+ "border": 0,
+ },
+ {
+ "type": "rich_text_list",
+ "elements": [
+ {
+ "type": "rich_text_section",
+ "elements": [{"type": "text", "text": "bullet"}],
+ }
+ ],
+ "style": "bullet",
+ "indent": 0,
+ "border": 0,
+ },
+ {
+ "type": "rich_text_list",
+ "elements": [
+ {
+ "type": "rich_text_section",
+ "elements": [{"type": "text", "text": "list"}],
+ }
+ ],
+ "style": "bullet",
+ "indent": 1,
+ "border": 0,
+ },
+ {
+ "type": "rich_text_list",
+ "elements": [
+ {
+ "type": "rich_text_section",
+ "elements": [{"type": "text", "text": "third"}],
+ }
+ ],
+ "style": "bullet",
+ "indent": 2,
+ "border": 0,
+ },
+ {
+ "type": "rich_text_list",
+ "elements": [
+ {
+ "type": "rich_text_section",
+ "elements": [
+ {"type": "text", "text": "end bullet list"}
+ ],
+ }
+ ],
+ "style": "bullet",
+ "indent": 0,
+ "border": 0,
+ },
+ ],
+ }
+ ],
+ "rendered": [
+ "1. number",
+ " a. list",
+ " i. third",
+ "2. end number list",
+ "• bullet",
+ " ◦ list",
+ " ▪︎ third",
+ "• end bullet list",
+ ],
+ },
+ ],
+)
+def test_render_blocks(case):
+ assert wee_slack.unfurl_blocks(case["blocks"]) == case["rendered"]