Files
ai-bot/tests/test_followup.py

47 lines
1.5 KiB
Python

"""Tests for orac.followup: recent-activity tracker + screener rate limit."""
from __future__ import annotations
import time
from orac import followup
def test_untouched_channel_is_not_recent() -> None:
followup.reset()
assert followup.was_recent("unused", window_s=60.0) is False
assert followup.last_interaction_age("unused") is None
def test_touch_then_was_recent_within_window() -> None:
followup.reset()
followup.touch("Public")
assert followup.was_recent("Public", window_s=60.0) is True
age = followup.last_interaction_age("Public")
assert age is not None and age < 1.0
def test_was_recent_expires_after_window() -> None:
followup.reset()
followup.touch("Public")
# Immediately check with a zero-width window — should not count as recent.
time.sleep(0.01)
assert followup.was_recent("Public", window_s=0.001) is False
def test_screener_ok_rate_limits_per_channel() -> None:
followup.reset()
# First call allowed
assert followup.screener_ok("Public", min_interval_s=0.5) is True
# Immediate second call blocked
assert followup.screener_ok("Public", min_interval_s=0.5) is False
# Different channel not blocked
assert followup.screener_ok("#general", min_interval_s=0.5) is True
def test_screener_ok_allows_after_interval() -> None:
followup.reset()
assert followup.screener_ok("Public", min_interval_s=0.05) is True
time.sleep(0.1)
assert followup.screener_ok("Public", min_interval_s=0.05) is True