Skip to content

Commit aaabe50

Browse files
authored
fix(types): accept a sequence of suggested prompts in assistant context (#1382)
1 parent 23a4731 commit aaabe50

File tree

4 files changed

+86
-4
lines changed

4 files changed

+86
-4
lines changed

slack_bolt/context/set_suggested_prompts/async_set_suggested_prompts.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import List, Dict, Union, Optional
1+
from typing import Dict, List, Optional, Sequence, Union
22

33
from slack_sdk.web.async_client import AsyncWebClient
44
from slack_sdk.web.async_slack_response import AsyncSlackResponse
@@ -21,7 +21,7 @@ def __init__(
2121

2222
async def __call__(
2323
self,
24-
prompts: List[Union[str, Dict[str, str]]],
24+
prompts: Sequence[Union[str, Dict[str, str]]],
2525
title: Optional[str] = None,
2626
) -> AsyncSlackResponse:
2727
prompts_arg: List[Dict[str, str]] = []

slack_bolt/context/set_suggested_prompts/set_suggested_prompts.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import List, Dict, Union, Optional
1+
from typing import Dict, List, Optional, Sequence, Union
22

33
from slack_sdk import WebClient
44
from slack_sdk.web import SlackResponse
@@ -21,7 +21,7 @@ def __init__(
2121

2222
def __call__(
2323
self,
24-
prompts: List[Union[str, Dict[str, str]]],
24+
prompts: Sequence[Union[str, Dict[str, str]]],
2525
title: Optional[str] = None,
2626
) -> SlackResponse:
2727
prompts_arg: List[Dict[str, str]] = []
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import pytest
2+
from slack_sdk import WebClient
3+
from slack_sdk.web import SlackResponse
4+
5+
from slack_bolt.context.set_suggested_prompts import SetSuggestedPrompts
6+
from tests.mock_web_api_server import cleanup_mock_web_api_server, setup_mock_web_api_server
7+
8+
9+
class TestSetSuggestedPrompts:
10+
def setup_method(self):
11+
setup_mock_web_api_server(self)
12+
valid_token = "xoxb-valid"
13+
mock_api_server_base_url = "http://localhost:8888"
14+
self.web_client = WebClient(token=valid_token, base_url=mock_api_server_base_url)
15+
16+
def teardown_method(self):
17+
cleanup_mock_web_api_server(self)
18+
19+
def test_set_suggested_prompts(self):
20+
set_suggested_prompts = SetSuggestedPrompts(client=self.web_client, channel_id="C111", thread_ts="123.123")
21+
response: SlackResponse = set_suggested_prompts(prompts=["One", "Two"])
22+
assert response.status_code == 200
23+
24+
def test_set_suggested_prompts_objects(self):
25+
set_suggested_prompts = SetSuggestedPrompts(client=self.web_client, channel_id="C111", thread_ts="123.123")
26+
response: SlackResponse = set_suggested_prompts(
27+
prompts=[
28+
"One",
29+
{"title": "Two", "message": "What's before addition?"},
30+
],
31+
)
32+
assert response.status_code == 200
33+
34+
def test_set_suggested_prompts_invalid(self):
35+
set_suggested_prompts = SetSuggestedPrompts(client=self.web_client, channel_id="C111", thread_ts="123.123")
36+
with pytest.raises(TypeError):
37+
set_suggested_prompts()
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import asyncio
2+
3+
import pytest
4+
from slack_sdk.web.async_client import AsyncWebClient
5+
from slack_sdk.web.async_slack_response import AsyncSlackResponse
6+
7+
from slack_bolt.context.set_suggested_prompts.async_set_suggested_prompts import AsyncSetSuggestedPrompts
8+
from tests.mock_web_api_server import cleanup_mock_web_api_server, setup_mock_web_api_server
9+
10+
11+
class TestAsyncSetSuggestedPrompts:
12+
@pytest.fixture
13+
def event_loop(self):
14+
setup_mock_web_api_server(self)
15+
valid_token = "xoxb-valid"
16+
mock_api_server_base_url = "http://localhost:8888"
17+
self.web_client = AsyncWebClient(token=valid_token, base_url=mock_api_server_base_url)
18+
19+
loop = asyncio.get_event_loop()
20+
yield loop
21+
loop.close()
22+
cleanup_mock_web_api_server(self)
23+
24+
@pytest.mark.asyncio
25+
async def test_set_suggested_prompts(self):
26+
set_suggested_prompts = AsyncSetSuggestedPrompts(client=self.web_client, channel_id="C111", thread_ts="123.123")
27+
response: AsyncSlackResponse = await set_suggested_prompts(prompts=["One", "Two"])
28+
assert response.status_code == 200
29+
30+
@pytest.mark.asyncio
31+
async def test_set_suggested_prompts_objects(self):
32+
set_suggested_prompts = AsyncSetSuggestedPrompts(client=self.web_client, channel_id="C111", thread_ts="123.123")
33+
response: AsyncSlackResponse = await set_suggested_prompts(
34+
prompts=[
35+
"One",
36+
{"title": "Two", "message": "What's before addition?"},
37+
],
38+
)
39+
assert response.status_code == 200
40+
41+
@pytest.mark.asyncio
42+
async def test_set_suggested_prompts_invalid(self):
43+
set_suggested_prompts = AsyncSetSuggestedPrompts(client=self.web_client, channel_id="C111", thread_ts="123.123")
44+
with pytest.raises(TypeError):
45+
await set_suggested_prompts()

0 commit comments

Comments
 (0)