ForcePilot/backend/test/unit/channels/test_twitch_deduplicator.py
Kris 3264900bc9 test: 新增多渠道单元测试用例并配置测试环境变量
新增了Twitch、Telegram、Discord、Slack、Mattermost、WeChat、Zalo等多渠道的单元测试用例,覆盖了令牌处理、速率限制、消息去重、会话解析、格式转换、安全策略等模块
同时在测试配置中添加了测试用的OpenAI API密钥环境变量
2026-05-12 00:56:47 +08:00

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