Skip to content

Commit 3e49461

Browse files
Patch fixes and better test coverage
1 parent f30dd71 commit 3e49461

File tree

4 files changed

+45
-0
lines changed

4 files changed

+45
-0
lines changed

slack_bolt/kwargs_injection/async_utils.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ def build_async_required_kwargs(
6060
"set_suggested_prompts": request.context.set_suggested_prompts,
6161
"get_thread_context": request.context.get_thread_context,
6262
"save_thread_context": request.context.save_thread_context,
63+
"say_stream": request.context.say_stream,
6364
# middleware
6465
"next": next_func,
6566
"next_": next_func, # for the middleware using Python's built-in `next()` function

slack_bolt/kwargs_injection/utils.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ def build_required_kwargs(
5959
"set_title": request.context.set_title,
6060
"set_suggested_prompts": request.context.set_suggested_prompts,
6161
"save_thread_context": request.context.save_thread_context,
62+
"say_stream": request.context.say_stream,
6263
# middleware
6364
"next": next_func,
6465
"next_": next_func, # for the middleware using Python's built-in `next()` function

tests/scenario_tests/test_events_say_stream.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
import json
12
import time
3+
from urllib.parse import quote
24

35
import pytest
46
from slack_sdk.web import WebClient
@@ -17,6 +19,7 @@
1719
user_message_event_body as threaded_user_message_event_body,
1820
)
1921
from tests.scenario_tests.test_message_bot import bot_message_event_payload, user_message_event_payload
22+
from tests.scenario_tests.test_view_submission import body as view_submission_body
2023
from tests.utils import remove_os_env_temporarily, restore_os_env
2124

2225

@@ -169,3 +172,21 @@ def handle_user_message(say_stream: SayStream):
169172
response = app.dispatch(request)
170173
assert response.status == 200
171174
assert_target_called(called)
175+
176+
def test_say_stream_is_none_for_view_submission(self):
177+
app = App(client=self.web_client, request_verification_enabled=False)
178+
called = {"value": False}
179+
180+
@app.view("view-id")
181+
def handle_view(ack, say_stream, context: BoltContext):
182+
ack()
183+
assert say_stream is None
184+
assert context.say_stream is None
185+
called["value"] = True
186+
187+
request = BoltRequest(
188+
body=f"payload={quote(json.dumps(view_submission_body))}",
189+
)
190+
response = app.dispatch(request)
191+
assert response.status == 200
192+
assert_target_called(called)

tests/scenario_tests_async/test_events_say_stream.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import asyncio
2+
import json
23
import time
4+
from urllib.parse import quote
35

46
import pytest
57
from slack_sdk.web.async_client import AsyncWebClient
@@ -18,6 +20,7 @@
1820
from tests.scenario_tests_async.test_events_assistant import user_message_event_body as threaded_user_message_event_body
1921
from tests.scenario_tests_async.test_events_assistant import thread_started_event_body, user_message_event_body
2022
from tests.scenario_tests_async.test_message_bot import bot_message_event_payload, user_message_event_payload
23+
from tests.scenario_tests_async.test_view_submission import body as view_submission_body
2124
from tests.utils import remove_os_env_temporarily, restore_os_env
2225

2326

@@ -179,3 +182,22 @@ async def handle_user_message(say_stream: AsyncSayStream, context: AsyncBoltCont
179182
response = await app.async_dispatch(request)
180183
assert response.status == 200
181184
await assert_target_called(called)
185+
186+
@pytest.mark.asyncio
187+
async def test_say_stream_is_none_for_view_submission(self):
188+
app = AsyncApp(client=self.web_client, request_verification_enabled=False)
189+
called = {"value": False}
190+
191+
@app.view("view-id")
192+
async def handle_view(ack, say_stream, context: AsyncBoltContext):
193+
await ack()
194+
assert say_stream is None
195+
assert context.say_stream is None
196+
called["value"] = True
197+
198+
request = AsyncBoltRequest(
199+
body=f"payload={quote(json.dumps(view_submission_body))}",
200+
)
201+
response = await app.async_dispatch(request)
202+
assert response.status == 200
203+
await assert_target_called(called)

0 commit comments

Comments
 (0)