ForcePilot/backend/test/unit/channels/test_twitch_deduplicator.py

54 lines
1.8 KiB
Python
Raw Normal View History

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