mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-07-08 11:56:59 +00:00
Fix calendar recurrence controls
This commit is contained in:
@@ -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"]
|
||||
|
||||
Reference in New Issue
Block a user