From 69945b730fd3f6b6138ce50e49fc3392fcd74d71 Mon Sep 17 00:00:00 2001 From: yj <2077506045@qq.com> Date: 星期一, 28 七月 2025 18:16:52 +0800 Subject: [PATCH] 新增关键词过滤;新增活跃客服统计;新增掉线通知 --- tests/test_message_processor.py | 130 +++++++++++++++++++++++++++++++++++++++---- 1 files changed, 118 insertions(+), 12 deletions(-) diff --git a/tests/test_message_processor.py b/tests/test_message_processor.py index 5e1eee2..e149ce8 100644 --- a/tests/test_message_processor.py +++ b/tests/test_message_processor.py @@ -13,8 +13,13 @@ """娴嬭瘯鍓嶅噯澶�""" self.processor = MessageProcessor() - def test_is_valid_group_message_success(self): + @patch('app.services.message_processor.silence_service') + @patch('app.services.message_processor.friend_ignore_service') + def test_is_valid_group_message_success(self, mock_friend_ignore_service, mock_silence_service): """娴嬭瘯鏈夋晥缇よ亰娑堟伅楠岃瘉""" + mock_silence_service.is_silence_active.return_value = False + mock_friend_ignore_service.is_friend_ignored.return_value = False + callback_data = { "messageType": "80001", "data": { @@ -24,7 +29,7 @@ "self": False } } - + result = self.processor.is_valid_group_message(callback_data) assert result is True @@ -72,9 +77,12 @@ result = self.processor.is_valid_group_message(callback_data) assert result is False + @patch('app.services.message_processor.silence_service') @patch('app.services.message_processor.friend_ignore_service') - def test_is_valid_group_message_friend_ignored(self, mock_friend_ignore_service): + def test_is_valid_group_message_friend_ignored(self, mock_friend_ignore_service, mock_silence_service): """娴嬭瘯濂藉弸鍦ㄥ拷鐣ュ垪琛ㄤ腑鐨勬秷鎭�""" + mock_silence_service.is_silence_active.side_effect = [False, False] # 涓ゆ妫�鏌ラ兘杩斿洖False + mock_silence_service.activate_silence_mode.return_value = True mock_friend_ignore_service.is_friend_ignored.return_value = True callback_data = { @@ -91,9 +99,11 @@ assert result is False mock_friend_ignore_service.is_friend_ignored.assert_called_once_with("wxid_test123") + @patch('app.services.message_processor.silence_service') @patch('app.services.message_processor.friend_ignore_service') - def test_is_valid_group_message_friend_not_ignored(self, mock_friend_ignore_service): + def test_is_valid_group_message_friend_not_ignored(self, mock_friend_ignore_service, mock_silence_service): """娴嬭瘯濂藉弸涓嶅湪蹇界暐鍒楄〃涓殑娑堟伅""" + mock_silence_service.is_silence_active.return_value = False mock_friend_ignore_service.is_friend_ignored.return_value = False callback_data = { @@ -109,12 +119,14 @@ result = self.processor.is_valid_group_message(callback_data) assert result is True mock_friend_ignore_service.is_friend_ignored.assert_called_once_with("wxid_test123") - - @patch('app.services.message_processor.redis_queue') - def test_enqueue_callback_message_success(self, mock_redis_queue): - """娴嬭瘯娑堟伅鍏ラ槦鎴愬姛""" - mock_redis_queue.enqueue_message.return_value = True - + + @patch('app.services.message_processor.silence_service') + @patch('app.services.message_processor.friend_ignore_service') + def test_is_valid_group_message_silence_active(self, mock_friend_ignore_service, mock_silence_service): + """娴嬭瘯缇ょ粍闈欓粯妯″紡婵�娲绘椂鐨勬秷鎭鐞嗭紙闈炲拷鐣ュソ鍙嬶級""" + mock_friend_ignore_service.is_friend_ignored.return_value = False + mock_silence_service.is_silence_active.return_value = True + callback_data = { "messageType": "80001", "data": { @@ -124,9 +136,103 @@ "self": False } } - + + result = self.processor.is_valid_group_message(callback_data) + assert result is False + mock_silence_service.is_silence_active.assert_called_once_with("group123@chatroom") + + @patch('app.services.message_processor.silence_service') + @patch('app.services.message_processor.friend_ignore_service') + def test_is_valid_group_message_friend_ignored_activate_silence(self, mock_friend_ignore_service, mock_silence_service): + """娴嬭瘯濂藉弸琚拷鐣ユ椂婵�娲婚潤榛樻ā寮�""" + mock_silence_service.is_silence_active.side_effect = [False, False] # 绗竴娆℃鏌ユ湭婵�娲伙紝绗簩娆℃鏌ュ拷鐣ュソ鍙嬫椂涔熸湭婵�娲� + mock_silence_service.activate_silence_mode.return_value = True + mock_friend_ignore_service.is_friend_ignored.return_value = True + + callback_data = { + "messageType": "80001", + "data": { + "fromUser": "wxid_test123", + "fromGroup": "group123@chatroom", + "content": "娴嬭瘯娑堟伅", + "self": False + } + } + + result = self.processor.is_valid_group_message(callback_data) + assert result is False + mock_silence_service.activate_silence_mode.assert_called_once_with("group123@chatroom") + + @patch('app.services.message_processor.silence_service') + @patch('app.services.message_processor.friend_ignore_service') + def test_is_valid_group_message_friend_ignored_extend_silence(self, mock_friend_ignore_service, mock_silence_service): + """娴嬭瘯濂藉弸琚拷鐣ユ椂寤堕暱缇ょ粍闈欓粯妯″紡""" + mock_silence_service.is_silence_active.return_value = True # 缇ょ粍闈欓粯妯″紡宸叉縺娲� + mock_silence_service.extend_silence_mode.return_value = True + mock_friend_ignore_service.is_friend_ignored.return_value = True + + callback_data = { + "messageType": "80001", + "data": { + "fromUser": "wxid_test123", + "fromGroup": "group123@chatroom", + "content": "娴嬭瘯娑堟伅", + "self": False + } + } + + result = self.processor.is_valid_group_message(callback_data) + assert result is False + mock_silence_service.extend_silence_mode.assert_called_once_with("group123@chatroom") + + @patch('app.services.message_processor.silence_service') + @patch('app.services.message_processor.friend_ignore_service') + def test_is_valid_group_message_friend_ignored_in_silence_mode(self, mock_friend_ignore_service, mock_silence_service): + """娴嬭瘯缇ょ粍闈欓粯妯″紡涓嬪ソ鍙嬫秷鎭粛鑳藉埛鏂版椂闀�""" + # 妯℃嫙缇ょ粍闈欓粯妯″紡宸叉縺娲荤殑鎯呭喌 + mock_friend_ignore_service.is_friend_ignored.return_value = True + mock_silence_service.is_silence_active.return_value = True + mock_silence_service.extend_silence_mode.return_value = True + + callback_data = { + "messageType": "80001", + "data": { + "fromUser": "wxid_ignored_friend", + "fromGroup": "group123@chatroom", + "content": "琚拷鐣ュソ鍙嬪湪缇ょ粍闈欓粯妯″紡涓嬬殑娑堟伅", + "self": False + } + } + + result = self.processor.is_valid_group_message(callback_data) + assert result is False + + # 楠岃瘉濂藉弸蹇界暐妫�鏌ヨ璋冪敤 + mock_friend_ignore_service.is_friend_ignored.assert_called_once_with("wxid_ignored_friend") + # 楠岃瘉缇ょ粍闈欓粯妯″紡鏃堕棿琚欢闀� + mock_silence_service.extend_silence_mode.assert_called_once_with("group123@chatroom") + + @patch('app.services.message_processor.silence_service') + @patch('app.services.message_processor.friend_ignore_service') + @patch('app.services.message_processor.redis_queue') + def test_enqueue_callback_message_success(self, mock_redis_queue, mock_friend_ignore_service, mock_silence_service): + """娴嬭瘯娑堟伅鍏ラ槦鎴愬姛""" + mock_silence_service.is_silence_active.return_value = False + mock_friend_ignore_service.is_friend_ignored.return_value = False + mock_redis_queue.enqueue_message.return_value = True + + callback_data = { + "messageType": "80001", + "data": { + "fromUser": "wxid_test123", + "fromGroup": "group123@chatroom", + "content": "娴嬭瘯娑堟伅", + "self": False + } + } + result = self.processor.enqueue_callback_message(callback_data) - + assert result is True mock_redis_queue.enqueue_message.assert_called_once_with("wxid_test123", callback_data) -- Gitblit v1.9.1