新增了Twitch、Telegram、Discord、Slack、Mattermost、WeChat、Zalo等多渠道的单元测试用例,覆盖了令牌处理、速率限制、消息去重、会话解析、格式转换、安全策略等模块 同时在测试配置中添加了测试用的OpenAI API密钥环境变量
54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
from __future__ import annotations
|
|
|
|
import time
|
|
|
|
from yuxi.channels.adapters.twitch.deduplicator import MessageDeduplicator
|
|
|
|
|
|
class TestMessageDeduplicator:
|
|
|
|
def test_first_message_not_duplicate(self):
|
|
dedup = MessageDeduplicator()
|
|
assert dedup.is_duplicate("msg_001") is False
|
|
|
|
def test_repeated_message_is_duplicate(self):
|
|
dedup = MessageDeduplicator()
|
|
assert dedup.is_duplicate("msg_001") is False
|
|
assert dedup.is_duplicate("msg_001") is True
|
|
assert dedup.is_duplicate("msg_001") is True
|
|
|
|
def test_different_messages_not_duplicates(self):
|
|
dedup = MessageDeduplicator()
|
|
assert dedup.is_duplicate("msg_001") is False
|
|
assert dedup.is_duplicate("msg_002") is False
|
|
assert dedup.is_duplicate("msg_003") is False
|
|
|
|
def test_expired_message_not_duplicate(self, monkeypatch):
|
|
dedup = MessageDeduplicator()
|
|
dedup.TTL_SECONDS = 0.1
|
|
|
|
assert dedup.is_duplicate("msg_001") is False
|
|
time.sleep(0.15)
|
|
assert dedup.is_duplicate("msg_001") is False
|
|
|
|
def test_mark_seen(self):
|
|
dedup = MessageDeduplicator()
|
|
dedup.mark_seen("msg_001")
|
|
assert dedup.is_duplicate("msg_001") is True
|
|
|
|
def test_length_tracks_entries(self):
|
|
dedup = MessageDeduplicator()
|
|
assert len(dedup) == 0
|
|
dedup.is_duplicate("msg_001")
|
|
assert len(dedup) == 1
|
|
dedup.is_duplicate("msg_002")
|
|
assert len(dedup) == 2
|
|
dedup.is_duplicate("msg_001")
|
|
assert len(dedup) == 2
|
|
|
|
def test_different_ids_independent(self):
|
|
dedup = MessageDeduplicator()
|
|
for i in range(100):
|
|
assert dedup.is_duplicate(f"msg_{i:04d}") is False
|
|
for i in range(100):
|
|
assert dedup.is_duplicate(f"msg_{i:04d}") is True |