Files
kefu/deploy/recognition-audit-20260916/extend_protocol_audit.py
T
2026-09-21 10:34:06 +08:00

54 lines
2.4 KiB
Python

from pathlib import Path
import shutil
audit = Path(__file__).resolve().parent
path = audit/'test_protocol_audit_boundaries.py'
text = path.read_text(encoding='utf-8')
insert = '''
def test_overflowing_unanswered_batch_cannot_answer_from_truncated_tail(self):
self.db.messages = [message(i, text=f'连续问题-{i}') for i in range(1,102)]
self.db.events = [self.db.messages[-1]]
self.bot.poll_once()
self.generate.assert_not_called()
self.assertEqual(self.sender.calls, [])
self.assertIn('100', self.bot._pending[session_key(ACCOUNT, CONV)]['last_error'])
def test_exactly_100_unanswered_messages_preserve_every_part(self):
self.db.messages = [message(i, text=f'连续问题-{i}') for i in range(1,101)]
self.db.events = [self.db.messages[-1]]
self.bot.poll_once()
context = self.generate.call_args.args[0]
self.assertEqual(len(context['messages']), 100)
self.assertEqual(context['messages'][0]['content'], '连续问题-1')
self.assertEqual(len(self.sender.calls), 1)
def test_own_reply_within_long_history_makes_current_batch_complete(self):
self.db.messages = [message(i, text=f'历史-{i}') for i in range(1,202)]
self.db.messages[-3] = message(199, self=True, text='人工已回复')
self.db.events = [self.db.messages[-1]]
self.bot.poll_once()
self.generate.assert_called_once()
self.assertEqual(len(self.sender.calls), 1)
def test_existing_approved_draft_with_media_is_not_sent(self):
pic = message(2, text='[图片]')
pic['content_type'] = 3
latest = message(3, text='请看图')
self.db.messages = [pic, latest]
self.bot.message_batch_window_seconds = 60
self.db.events = [latest]
self.bot.poll_once()
state = self.bot._pending[session_key(ACCOUNT, CONV)]
state.update(reply_text='过时批准草稿', approved=True, awaiting_review=True, ready_at=0)
self.bot.poll_once()
self.assertFalse(state['approved'])
self.assertFalse(state['awaiting_review'])
self.assertEqual(state['reply_text'], '')
self.assertEqual(self.sender.calls, [])
'''
marker = "\n\nif __name__ == '__main__':"
assert marker in text and 'test_overflowing_unanswered_batch' not in text
path.write_text(text.replace(marker, '\n'+insert+marker), encoding='utf-8')
shutil.copy2(path, Path('C:/wechat_rpa')/path.name)