Skip to content

Commit 85081e1

Browse files
committed
test: update async tests to expect chunks when flushing buffer
1 parent 61d6d53 commit 85081e1

File tree

1 file changed

+79
-4
lines changed

1 file changed

+79
-4
lines changed

tests/slack_sdk_async/web/test_async_chat_stream.py

Lines changed: 79 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from slack_sdk.models.blocks.basic_components import FeedbackButtonObject
77
from slack_sdk.models.blocks.block_elements import FeedbackButtonsElement, IconButtonElement
88
from slack_sdk.models.blocks.blocks import ContextActionsBlock
9+
from slack_sdk.models.messages.chunk import MarkdownTextChunk, TaskUpdateChunk
910
from slack_sdk.web.async_client import AsyncWebClient
1011
from tests.mock_web_api_server import cleanup_mock_web_api_server, setup_mock_web_api_server
1112
from tests.slack_sdk.web.mock_web_api_handler import MockHandler
@@ -107,7 +108,10 @@ async def test_streams_a_short_message(self):
107108
stop_request = self.thread.server.chat_stream_requests.get("/chat.stopStream", {})
108109
self.assertEqual(stop_request.get("channel"), "C0123456789")
109110
self.assertEqual(stop_request.get("ts"), "123.123")
110-
self.assertEqual(stop_request.get("markdown_text"), "nice!")
111+
self.assertEqual(
112+
json.dumps(stop_request.get("chunks")),
113+
'[{"type": "markdown_text", "text": "nice!"}]',
114+
)
111115

112116
@async_test
113117
async def test_streams_a_long_message(self):
@@ -149,13 +153,19 @@ async def test_streams_a_long_message(self):
149153
start_request = self.thread.server.chat_stream_requests.get("/chat.startStream", {})
150154
self.assertEqual(start_request.get("channel"), "C0123456789")
151155
self.assertEqual(start_request.get("thread_ts"), "123.000")
152-
self.assertEqual(start_request.get("markdown_text"), "**this messag")
156+
self.assertEqual(
157+
json.dumps(start_request.get("chunks")),
158+
'[{"type": "markdown_text", "text": "**this messag"}]',
159+
)
153160
self.assertEqual(start_request.get("recipient_team_id"), "T0123456789")
154161
self.assertEqual(start_request.get("recipient_user_id"), "U0123456789")
155162

156163
append_request = self.thread.server.chat_stream_requests.get("/chat.appendStream", {})
157164
self.assertEqual(append_request.get("channel"), "C0123456789")
158-
self.assertEqual(append_request.get("markdown_text"), "e is bold!")
165+
self.assertEqual(
166+
json.dumps(append_request.get("chunks")),
167+
'[{"type": "markdown_text", "text": "e is bold!"}]',
168+
)
159169
self.assertEqual(append_request.get("token"), "xoxb-chat_stream_test_token1")
160170
self.assertEqual(append_request.get("ts"), "123.123")
161171

@@ -165,10 +175,75 @@ async def test_streams_a_long_message(self):
165175
'[{"elements": [{"negative_button": {"text": {"emoji": true, "text": "bad", "type": "plain_text"}, "value": "-1"}, "positive_button": {"text": {"emoji": true, "text": "good", "type": "plain_text"}, "value": "+1"}, "type": "feedback_buttons"}, {"icon": "trash", "text": {"emoji": true, "text": "delete", "type": "plain_text"}, "type": "icon_button"}], "type": "context_actions"}]',
166176
)
167177
self.assertEqual(stop_request.get("channel"), "C0123456789")
168-
self.assertEqual(stop_request.get("markdown_text"), "**")
178+
self.assertEqual(
179+
json.dumps(stop_request.get("chunks")),
180+
'[{"type": "markdown_text", "text": "**"}]',
181+
)
169182
self.assertEqual(stop_request.get("token"), "xoxb-chat_stream_test_token2")
170183
self.assertEqual(stop_request.get("ts"), "123.123")
171184

185+
@async_test
186+
async def test_streams_a_chunk_message(self):
187+
streamer = await self.client.chat_stream(
188+
channel="C0123456789",
189+
recipient_team_id="T0123456789",
190+
recipient_user_id="U0123456789",
191+
thread_ts="123.000",
192+
)
193+
await streamer.append(markdown_text="**this is ")
194+
await streamer.append(markdown_text="buffered**")
195+
await streamer.append(
196+
chunks=[
197+
TaskUpdateChunk(
198+
id="001",
199+
title="Counting...",
200+
status="pending",
201+
),
202+
],
203+
)
204+
await streamer.append(
205+
chunks=[
206+
MarkdownTextChunk(text="**this is unbuffered**"),
207+
],
208+
)
209+
await streamer.append(markdown_text="\n")
210+
await streamer.stop(
211+
chunks=[
212+
MarkdownTextChunk(text=":space_invader:"),
213+
],
214+
)
215+
216+
self.assertEqual(self.received_requests.get("/chat.startStream", 0), 1)
217+
self.assertEqual(self.received_requests.get("/chat.appendStream", 0), 1)
218+
self.assertEqual(self.received_requests.get("/chat.stopStream", 0), 1)
219+
220+
if hasattr(self.thread.server, "chat_stream_requests"):
221+
start_request = self.thread.server.chat_stream_requests.get("/chat.startStream", {})
222+
self.assertEqual(start_request.get("channel"), "C0123456789")
223+
self.assertEqual(start_request.get("thread_ts"), "123.000")
224+
self.assertEqual(
225+
json.dumps(start_request.get("chunks")),
226+
'[{"type": "markdown_text", "text": "**this is buffered**"}, {"id": "001", "status": "pending", "title": "Counting...", "type": "task_update"}]',
227+
)
228+
self.assertEqual(start_request.get("recipient_team_id"), "T0123456789")
229+
self.assertEqual(start_request.get("recipient_user_id"), "U0123456789")
230+
231+
append_request = self.thread.server.chat_stream_requests.get("/chat.appendStream", {})
232+
self.assertEqual(append_request.get("channel"), "C0123456789")
233+
self.assertEqual(append_request.get("ts"), "123.123")
234+
self.assertEqual(
235+
json.dumps(append_request.get("chunks")),
236+
'[{"text": "**this is unbuffered**", "type": "markdown_text"}]',
237+
)
238+
239+
stop_request = self.thread.server.chat_stream_requests.get("/chat.stopStream", {})
240+
self.assertEqual(stop_request.get("channel"), "C0123456789")
241+
self.assertEqual(stop_request.get("ts"), "123.123")
242+
self.assertEqual(
243+
json.dumps(stop_request.get("chunks")),
244+
'[{"type": "markdown_text", "text": "\\n"}, {"text": ":space_invader:", "type": "markdown_text"}]',
245+
)
246+
172247
@async_test
173248
async def test_streams_errors_when_appending_to_an_unstarted_stream(self):
174249
streamer = await self.client.chat_stream(

0 commit comments

Comments
 (0)