33from botocore .exceptions import ClientError
44
55
6- def test_setup_handlers_registers_correctly (mock_env ):
7- """Test that setup_handlers registers all handlers correctly"""
8- # set up mocks
9- mock_app = Mock ()
10-
11- # delete and import module to test
12- if "app.slack.slack_handlers" in sys .modules :
13- del sys .modules ["app.slack.slack_handlers" ]
14- from app .slack .slack_handlers import setup_handlers
15-
16- # perform operation
17- setup_handlers (mock_app )
18-
19- # assertions
20- # Verify all handlers are registered
21- assert mock_app .event .call_count == 2 # app_mention and unified message handler
22-
23-
246@patch ("app.utils.handler_utils.is_duplicate_event" )
257@patch ("app.utils.handler_utils.trigger_async_processing" )
268@patch ("app.utils.handler_utils.respond_with_eyes" )
279def test_app_mention_handler (
28- mock_respond_with_eyes , mock_trigger_async_processing , mock_is_duplicate_event , mock_get_parameter , mock_env
10+ mock_respond_with_eyes : Mock ,
11+ mock_trigger_async_processing : Mock ,
12+ mock_is_duplicate_event : Mock ,
13+ mock_get_parameter : Mock ,
14+ mock_env : Mock ,
2915):
3016 """Test app mention handler execution"""
3117 # set up mocks
@@ -45,7 +31,13 @@ def decorator(func):
4531 mock_app .event = capture_event
4632 mock_app .action = Mock ()
4733 mock_ack = Mock ()
48- mock_event = {"user" : "U123" , "text" : "<@U456> test" , "channel" : "C123" }
34+ mock_event = {
35+ "user" : "U123" ,
36+ "text" : "<@U456> test" ,
37+ "channel" : "C123" ,
38+ "thread_ts" : "123" ,
39+ "channel_type" : "channel" ,
40+ }
4941 mock_body = {"event_id" : "evt123" }
5042 mock_client = Mock ()
5143 mock_is_duplicate_event .return_value = False
@@ -61,19 +53,26 @@ def decorator(func):
6153
6254 # assertions
6355 mock_ack .assert_called_once ()
64- mock_trigger_async_processing .assert_called_once ()
56+ mock_trigger_async_processing .assert_called_once_with (
57+ {"event" : mock_event , "event_id" : "evt123" , "bot_token" : "test-token" }
58+ )
6559 mock_respond_with_eyes .assert_called_once ()
6660
6761
6862@patch ("app.utils.handler_utils.is_duplicate_event" )
6963@patch ("app.utils.handler_utils.trigger_async_processing" )
7064@patch ("app.utils.handler_utils.respond_with_eyes" )
7165def test_message_handler_non_dm_skip (
72- mock_respond_with_eyes , mock_trigger_async_processing , mock_is_duplicate_event , mock_get_parameter , mock_env
66+ mock_respond_with_eyes : Mock ,
67+ mock_trigger_async_processing : Mock ,
68+ mock_is_duplicate_event : Mock ,
69+ mock_get_parameter : Mock ,
70+ mock_env : Mock ,
7371):
7472 """Test message handler skips non-DM messages"""
7573 # set up mocks
7674 mock_app = Mock ()
75+ mock_is_duplicate_event .return_value = False
7776
7877 # Capture the message handler
7978 message_handler = None
@@ -107,19 +106,20 @@ def decorator(func):
107106 # assertions
108107 mock_ack .assert_called_once ()
109108 mock_trigger_async_processing .assert_not_called () # Should not trigger for non-DM
109+ mock_respond_with_eyes .assert_called_once ()
110110
111111
112112@patch ("app.utils.handler_utils.is_duplicate_event" )
113113@patch ("app.utils.handler_utils.trigger_async_processing" )
114114@patch ("app.utils.handler_utils.respond_with_eyes" )
115115@patch ("app.slack.slack_events.store_feedback" )
116116def test_feedback_yes_action_handler (
117- mock_store_feedback ,
118- mock_respond_with_eyes ,
119- mock_trigger_async_processing ,
120- mock_is_duplicate_event ,
121- mock_get_parameter ,
122- mock_env ,
117+ mock_store_feedback : Mock ,
118+ mock_respond_with_eyes : Mock ,
119+ mock_trigger_async_processing : Mock ,
120+ mock_is_duplicate_event : Mock ,
121+ mock_get_parameter : Mock ,
122+ mock_env : Mock ,
123123):
124124 """Test feedback_yes action handler"""
125125 if "app.slack.slack_handlers" in sys .modules :
0 commit comments