Bot & Automation
Activity Reminder Bot
/root/hermes-projects/Activity Reminder Bot
tests/test_alarm_repeat.py
text
from datetime import date, datetime, time, timedelta
from activity_reminder_bot.models import Reminder, ReminderRepeat, ReminderStatus
from activity_reminder_bot.services.reminders import ReminderService
def make_notified_reminder(notified_at: datetime, alarm_count: int = 1) -> Reminder:
return Reminder(
public_id="REM-TEST",
user_id=123,
user_name="Test User",
activity_name="Test alarm",
description="Test alarm",
reminder_date=date(2026, 6, 9),
reminder_time=time(19, 0),
repeat=ReminderRepeat.none,
status=ReminderStatus.notified,
created_at=datetime(2026, 6, 9, 18, 59),
updated_at=datetime(2026, 6, 9, 19, 0),
notified_at=notified_at,
alarm_message_id=10,
alarm_count=alarm_count,
)
def test_should_repeat_alarm_after_interval() -> None:
service = ReminderService()
reminder = make_notified_reminder(datetime(2026, 6, 9, 19, 0))
assert service.should_repeat_alarm(reminder, datetime(2026, 6, 9, 19, 1, 1))
def test_should_not_repeat_alarm_before_interval() -> None:
service = ReminderService()
reminder = make_notified_reminder(datetime(2026, 6, 9, 19, 0))
assert not service.should_repeat_alarm(reminder, datetime(2026, 6, 9, 19, 0, 30))
def test_should_not_repeat_alarm_at_max_count() -> None:
service = ReminderService()
reminder = make_notified_reminder(
datetime(2026, 6, 9, 19, 0) - timedelta(minutes=5),
alarm_count=service.settings.alarm_repeat_max_count,
)
assert not service.should_repeat_alarm(reminder, datetime(2026, 6, 9, 19, 5))