aboutsummaryrefslogtreecommitdiffstats
path: root/_pytest
diff options
context:
space:
mode:
authormelanie witt <melwittt@gmail.com>2023-09-22 02:09:53 -0700
committerGitHub <noreply@github.com>2023-09-22 11:09:53 +0200
commit2050552f6aed3525e2c32e70b40c7ba64c6eb103 (patch)
treea23d9f343852cbf154e47c1290ccbdac7eead62d /_pytest
parentc303a77c5420f2f97306802953d57a9587ba5fd6 (diff)
downloadwee-slack-2050552f6aed3525e2c32e70b40c7ba64c6eb103.tar.gz
Make render_emoji_as_string = "both" work with rich_text blocks (#902)
Commit 74da30342e8d328fc085d2158e37afda3b908f2c added support for using rich_text blocks to format messages. With this change, the use of replace_string_with_emoji() for text type "emoji" can result in running the replacement twice as replace_string_with_emoji() is also called as one of the last steps in SlackMessage.render(). This works fine in the default case when render_emoji_as_string = "", however render_emoji_as_string = "both" results in output like: πŸ˜„ (πŸ˜„ (:smile:)) instead of the intended: πŸ˜„ (:smile:) This excludes blocks rendered earlier in the method from the second call of replace_string_with_emoji().
Diffstat (limited to '_pytest')
-rw-r--r--_pytest/conftest.py2
-rw-r--r--_pytest/test_render_message.py100
2 files changed, 102 insertions, 0 deletions
diff --git a/_pytest/conftest.py b/_pytest/conftest.py
index 90e064e..5f1fde4 100644
--- a/_pytest/conftest.py
+++ b/_pytest/conftest.py
@@ -152,6 +152,8 @@ class FakeWeechat:
def info_get(self, info_name, arguments):
if info_name == "color_rgb2term":
return arguments
+ elif info_name == "weechat_data_dir":
+ return "."
else:
return ""
diff --git a/_pytest/test_render_message.py b/_pytest/test_render_message.py
new file mode 100644
index 0000000..c14fbd4
--- /dev/null
+++ b/_pytest/test_render_message.py
@@ -0,0 +1,100 @@
+import pytest
+
+import wee_slack
+
+
+@pytest.mark.parametrize(
+ "case",
+ [
+ {
+ "input_message": {
+ "blocks": [
+ {
+ "type": "rich_text",
+ "block_id": "5Cg6",
+ "elements": [
+ {
+ "type": "rich_text_section",
+ "elements": [
+ {
+ "type": "emoji",
+ "name": "smile",
+ "unicode": "1f604",
+ }
+ ],
+ },
+ ],
+ },
+ ],
+ "reactions": [{"name": "eyes", "users": ["U01E8P3JKM1"], "count": 1}],
+ },
+ "rendered": (
+ # Should be just <emoji>
+ "\U0001f604 <[color darkgray]>[\U0001f4401]<[color reset]>"
+ ),
+ },
+ {
+ "input_message": {
+ "blocks": [
+ {
+ "type": "rich_text",
+ "block_id": "5Cg6",
+ "elements": [
+ {
+ "type": "rich_text_section",
+ "elements": [
+ {
+ "type": "emoji",
+ "name": "smile",
+ "unicode": "1f604",
+ }
+ ],
+ },
+ ],
+ },
+ ],
+ "reactions": [{"name": "eyes", "users": ["U01E8P3JKM1"], "count": 1}],
+ },
+ "rendered": (
+ # Should be just :<emoji name>:
+ ":smile: <[color darkgray]>[:eyes:1]<[color reset]>"
+ ),
+ "render_emoji_as_string": True,
+ },
+ {
+ "input_message": {
+ "blocks": [
+ {
+ "type": "rich_text",
+ "block_id": "5Cg6",
+ "elements": [
+ {
+ "type": "rich_text_section",
+ "elements": [
+ {
+ "type": "emoji",
+ "name": "smile",
+ "unicode": "1f604",
+ }
+ ],
+ },
+ ],
+ },
+ ],
+ "reactions": [{"name": "eyes", "users": ["U01E8P3JKM1"], "count": 1}],
+ },
+ "rendered": (
+ # Should be <emoji> (:<emoji name>:)
+ "\U0001f604 (:smile:) <[color darkgray]>[\U0001f440 (:eyes:)1]<[color reset]>"
+ ),
+ "render_emoji_as_string": "both",
+ },
+ ],
+)
+def test_render_message(case, channel_general):
+ wee_slack.EMOJI, wee_slack.EMOJI_WITH_SKIN_TONES_REVERSE = wee_slack.load_emoji()
+ wee_slack.config.render_emoji_as_string = case.get("render_emoji_as_string")
+ message_json = {"ts": str(wee_slack.SlackTS()), **case["input_message"]}
+ message = wee_slack.SlackMessage("normal", message_json, channel_general)
+ result = message.render()
+ assert result == case["rendered"]