Bot & Automation
Activity Reminder Bot
/root/hermes-projects/Activity Reminder Bot
tests/test_natural_datetime_parser.py
text
from datetime import datetime
import pytest
from activity_reminder_bot.models import ReminderRepeat
from reminder_core.parsers import ReminderTextParser
def test_parse_tomorrow_meeting() -> None:
parser = ReminderTextParser()
result = parser.parse("Besok jam 08:00 meeting dengan klien", now=datetime(2026, 6, 9, 12, 0))
assert result.activity_name == "Meeting dengan klien"
assert result.due_at == datetime(2026, 6, 10, 8, 0)
assert result.repeat == ReminderRepeat.none
def test_parse_day_of_month() -> None:
parser = ReminderTextParser()
result = parser.parse("Bayar VPS tanggal 15 jam 19:00", now=datetime(2026, 6, 9, 12, 0))
assert result.activity_name == "Bayar VPS"
assert result.due_at == datetime(2026, 6, 15, 19, 0)
def test_parse_weekly_repeat() -> None:
parser = ReminderTextParser()
result = parser.parse("Setiap Senin jam 09:00 upload konten", now=datetime(2026, 6, 9, 12, 0))
assert result.activity_name == "Upload konten"
assert result.due_at == datetime(2026, 6, 15, 9, 0)
assert result.repeat == ReminderRepeat.weekly
def test_reject_past_datetime() -> None:
parser = ReminderTextParser()
with pytest.raises(ValueError):
parser.parse("Hari ini jam 08:00 meeting", now=datetime(2026, 6, 9, 12, 0))