Fix calendar recurrence controls

This commit is contained in:
pewdiepie-archdaemon
2026-06-24 11:11:07 +00:00
parent dd055ee6e3
commit 87e46e576a
12 changed files with 389 additions and 32 deletions
+81
View File
@@ -76,3 +76,84 @@ async def test_create_event_without_rrule_is_single():
assert ev is not None and (ev.rrule or "") == ""
finally:
db.close()
async def test_update_event_can_clear_rrule():
from src.tool_implementations import do_manage_calendar
owner = "tester-" + uuid.uuid4().hex[:6]
created = await do_manage_calendar(json.dumps({
"action": "create_event",
"summary": "Repeating standup",
"dtstart": "2026-07-01T14:00:00Z",
"rrule": "FREQ=WEEKLY;BYDAY=WE",
}), owner=owner)
assert created.get("exit_code", 0) == 0, created
updated = await do_manage_calendar(json.dumps({
"action": "update_event",
"uid": created["uid"],
"rrule": "",
}), owner=owner)
assert updated.get("exit_code", 0) == 0, updated
db = _TS()
try:
ev = db.query(CalendarEvent).filter(CalendarEvent.uid == created["uid"]).first()
assert ev is not None
assert (ev.rrule or "") == ""
finally:
db.close()
async def test_update_event_can_clear_rrule_with_repeat_none_alias():
from src.tool_implementations import do_manage_calendar
owner = "tester-" + uuid.uuid4().hex[:6]
created = await do_manage_calendar(json.dumps({
"action": "create_event",
"summary": "Repeating review",
"dtstart": "2026-07-01T15:00:00Z",
"rrule": "FREQ=WEEKLY;BYDAY=WE",
}), owner=owner)
assert created.get("exit_code", 0) == 0, created
updated = await do_manage_calendar(json.dumps({
"action": "update_event",
"uid": created["uid"],
"repeat": "none",
}), owner=owner)
assert updated.get("exit_code", 0) == 0, updated
db = _TS()
try:
ev = db.query(CalendarEvent).filter(CalendarEvent.uid == created["uid"]).first()
assert ev is not None
assert (ev.rrule or "") == ""
finally:
db.close()
async def test_list_events_exposes_rrule_for_repeating_events():
from src.tool_implementations import do_manage_calendar
owner = "tester-" + uuid.uuid4().hex[:6]
rrule = "FREQ=WEEKLY;BYDAY=WE"
created = await do_manage_calendar(json.dumps({
"action": "create_event",
"summary": "Weekly sync",
"dtstart": "2026-07-01T14:00:00Z",
"rrule": rrule,
}), owner=owner)
assert created.get("exit_code", 0) == 0, created
listed = await do_manage_calendar(json.dumps({
"action": "list_events",
"start": "2026-07-01T00:00:00Z",
"end": "2026-07-02T00:00:00Z",
}), owner=owner)
assert listed.get("exit_code", 0) == 0, listed
matches = [ev for ev in listed["events"] if ev["uid"] == created["uid"]]
assert matches
assert matches[0]["rrule"] == rrule
assert f"repeats({rrule})" in listed["response"]