11import pytest
2+ from unittest .mock import patch , MagicMock
3+
24from slack_sdk .web .async_client import AsyncWebClient
35
46from slack_bolt .context .say_stream .async_say_stream import AsyncSayStream
5- from tests .mock_web_api_server import (
6- cleanup_mock_web_api_server ,
7- setup_mock_web_api_server ,
8- )
97from tests .utils import remove_os_env_temporarily , restore_os_env
108
119
1210class TestAsyncSayStream :
13- default_chat_stream_buffer_size = AsyncWebClient .chat_stream .__kwdefaults__ ["buffer_size" ]
14-
1511 @pytest .fixture (scope = "function" , autouse = True )
1612 def setup_teardown (self ):
1713 old_os_env = remove_os_env_temporarily ()
18- setup_mock_web_api_server (self )
19- valid_token = "xoxb-valid"
20- mock_api_server_base_url = "http://localhost:8888"
2114 try :
22- self .web_client = AsyncWebClient (token = valid_token , base_url = mock_api_server_base_url )
23- yield # run the test here
15+ self .web_client = AsyncWebClient (token = "xoxb-valid" )
16+ yield
2417 finally :
25- cleanup_mock_web_api_server (self )
2618 restore_os_env (old_os_env )
2719
2820 @pytest .mark .asyncio
@@ -46,19 +38,22 @@ async def test_default_params(self):
4638 recipient_user_id = "U111" ,
4739 thread_ts = "111.222" ,
4840 )
49- stream = await say_stream ()
50-
51- assert stream ._buffer_size == self .default_chat_stream_buffer_size
52- assert stream ._stream_args == {
53- "channel" : "C111" ,
54- "thread_ts" : "111.222" ,
55- "recipient_team_id" : "T111" ,
56- "recipient_user_id" : "U111" ,
57- "task_display_mode" : None ,
58- "icon_emoji" : None ,
59- "icon_url" : None ,
60- "username" : None ,
61- }
41+ mock_chat_stream = MagicMock ()
42+
43+ async def fake_chat_stream (** kwargs ):
44+ return mock_chat_stream (** kwargs )
45+
46+ with patch .object (self .web_client , "chat_stream" , side_effect = fake_chat_stream ):
47+ await say_stream ()
48+ mock_chat_stream .assert_called_once_with (
49+ channel = "C111" ,
50+ recipient_team_id = "T111" ,
51+ recipient_user_id = "U111" ,
52+ thread_ts = "111.222" ,
53+ icon_emoji = None ,
54+ icon_url = None ,
55+ username = None ,
56+ )
6257
6358 @pytest .mark .asyncio
6459 async def test_parameter_overrides (self ):
@@ -69,19 +64,22 @@ async def test_parameter_overrides(self):
6964 recipient_user_id = "U111" ,
7065 thread_ts = "111.222" ,
7166 )
72- stream = await say_stream (channel = "C222" , thread_ts = "333.444" , recipient_team_id = "T222" , recipient_user_id = "U222" )
73-
74- assert stream ._buffer_size == self .default_chat_stream_buffer_size
75- assert stream ._stream_args == {
76- "channel" : "C222" ,
77- "thread_ts" : "333.444" ,
78- "recipient_team_id" : "T222" ,
79- "recipient_user_id" : "U222" ,
80- "task_display_mode" : None ,
81- "icon_emoji" : None ,
82- "icon_url" : None ,
83- "username" : None ,
84- }
67+ mock_chat_stream = MagicMock ()
68+
69+ async def fake_chat_stream (** kwargs ):
70+ return mock_chat_stream (** kwargs )
71+
72+ with patch .object (self .web_client , "chat_stream" , side_effect = fake_chat_stream ):
73+ await say_stream (channel = "C222" , thread_ts = "333.444" , recipient_team_id = "T222" , recipient_user_id = "U222" )
74+ mock_chat_stream .assert_called_once_with (
75+ channel = "C222" ,
76+ recipient_team_id = "T222" ,
77+ recipient_user_id = "U222" ,
78+ thread_ts = "333.444" ,
79+ icon_emoji = None ,
80+ icon_url = None ,
81+ username = None ,
82+ )
8583
8684 @pytest .mark .asyncio
8785 async def test_buffer_size_overrides (self ):
@@ -92,25 +90,29 @@ async def test_buffer_size_overrides(self):
9290 recipient_user_id = "U111" ,
9391 thread_ts = "111.222" ,
9492 )
95- stream = await say_stream (
96- buffer_size = 100 ,
97- channel = "C222" ,
98- thread_ts = "333.444" ,
99- recipient_team_id = "T222" ,
100- recipient_user_id = "U222" ,
101- )
93+ mock_chat_stream = MagicMock ()
94+
95+ async def fake_chat_stream (** kwargs ):
96+ return mock_chat_stream (** kwargs )
10297
103- assert stream ._buffer_size == 100
104- assert stream ._stream_args == {
105- "channel" : "C222" ,
106- "thread_ts" : "333.444" ,
107- "recipient_team_id" : "T222" ,
108- "recipient_user_id" : "U222" ,
109- "task_display_mode" : None ,
110- "icon_emoji" : None ,
111- "icon_url" : None ,
112- "username" : None ,
113- }
98+ with patch .object (self .web_client , "chat_stream" , side_effect = fake_chat_stream ):
99+ await say_stream (
100+ buffer_size = 100 ,
101+ channel = "C222" ,
102+ thread_ts = "333.444" ,
103+ recipient_team_id = "T222" ,
104+ recipient_user_id = "U222" ,
105+ )
106+ mock_chat_stream .assert_called_once_with (
107+ buffer_size = 100 ,
108+ channel = "C222" ,
109+ recipient_team_id = "T222" ,
110+ recipient_user_id = "U222" ,
111+ thread_ts = "333.444" ,
112+ icon_emoji = None ,
113+ icon_url = None ,
114+ username = None ,
115+ )
114116
115117 @pytest .mark .asyncio
116118 async def test_authorship_overrides (self ):
@@ -121,15 +123,19 @@ async def test_authorship_overrides(self):
121123 recipient_user_id = "U111" ,
122124 thread_ts = "111.222" ,
123125 )
124- stream = await say_stream (icon_emoji = ":maple_leaf:" , username = "Charlie Brown" )
125-
126- assert stream ._stream_args == {
127- "channel" : "C111" ,
128- "thread_ts" : "111.222" ,
129- "recipient_team_id" : "T111" ,
130- "recipient_user_id" : "U111" ,
131- "task_display_mode" : None ,
132- "icon_emoji" : ":maple_leaf:" ,
133- "icon_url" : None ,
134- "username" : "Charlie Brown" ,
135- }
126+ mock_chat_stream = MagicMock ()
127+
128+ async def fake_chat_stream (** kwargs ):
129+ return mock_chat_stream (** kwargs )
130+
131+ with patch .object (self .web_client , "chat_stream" , side_effect = fake_chat_stream ):
132+ await say_stream (icon_emoji = ":maple_leaf:" , username = "Charlie Brown" )
133+ mock_chat_stream .assert_called_once_with (
134+ channel = "C111" ,
135+ recipient_team_id = "T111" ,
136+ recipient_user_id = "U111" ,
137+ thread_ts = "111.222" ,
138+ icon_emoji = ":maple_leaf:" ,
139+ icon_url = None ,
140+ username = "Charlie Brown" ,
141+ )
0 commit comments