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))