feat: 增强日历功能并集成 AgentScope 代理服务
This commit is contained in:
@@ -25,6 +25,8 @@ async def test_mutate_calendar_event_create_returns_calendar_card_v1(
|
||||
|
||||
async def create_agent_generated(self, payload):
|
||||
assert payload.title == "晨会"
|
||||
assert payload.metadata is not None
|
||||
assert payload.metadata.reminder_minutes == 15
|
||||
return SimpleNamespace(
|
||||
id=created_id,
|
||||
title="晨会",
|
||||
@@ -32,7 +34,11 @@ async def test_mutate_calendar_event_create_returns_calendar_card_v1(
|
||||
start_at=datetime(2026, 3, 8, 1, 0, tzinfo=timezone.utc),
|
||||
end_at=datetime(2026, 3, 8, 2, 0, tzinfo=timezone.utc),
|
||||
timezone="Asia/Shanghai",
|
||||
metadata=SimpleNamespace(location="会议室A", color="#4F46E5"),
|
||||
metadata=SimpleNamespace(
|
||||
location="会议室A",
|
||||
color="#4F46E5",
|
||||
reminder_minutes=15,
|
||||
),
|
||||
)
|
||||
|
||||
class _FakeRepository:
|
||||
@@ -61,6 +67,7 @@ async def test_mutate_calendar_event_create_returns_calendar_card_v1(
|
||||
"endAt": "2026-03-08T10:00:00+08:00",
|
||||
"timezone": "Asia/Shanghai",
|
||||
"location": "会议室A",
|
||||
"reminderMinutes": 15,
|
||||
},
|
||||
),
|
||||
)
|
||||
@@ -69,6 +76,77 @@ async def test_mutate_calendar_event_create_returns_calendar_card_v1(
|
||||
data = cast(dict[str, object], result["data"])
|
||||
assert data["id"] == str(created_id)
|
||||
assert data["ok"] is True
|
||||
assert data["reminderMinutes"] == 15
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_mutate_calendar_event_update_maps_reminder_minutes(
|
||||
monkeypatch: pytest.MonkeyPatch,
|
||||
) -> None:
|
||||
event_id = uuid4()
|
||||
|
||||
class _FakeService:
|
||||
def __init__(self, **kwargs) -> None:
|
||||
del kwargs
|
||||
|
||||
async def get_by_id(self, item_id):
|
||||
assert item_id == event_id
|
||||
return SimpleNamespace(
|
||||
metadata=SimpleNamespace(
|
||||
model_dump=lambda: {
|
||||
"color": "#4F46E5",
|
||||
"location": "会议室A",
|
||||
"version": 1,
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
async def update(self, item_id, payload):
|
||||
assert item_id == event_id
|
||||
assert payload.metadata is not None
|
||||
assert payload.metadata.reminder_minutes == 30
|
||||
return SimpleNamespace(
|
||||
id=event_id,
|
||||
title="更新后",
|
||||
description=None,
|
||||
start_at=datetime(2026, 3, 8, 1, 0, tzinfo=timezone.utc),
|
||||
end_at=None,
|
||||
timezone="Asia/Shanghai",
|
||||
metadata=SimpleNamespace(
|
||||
location="会议室A",
|
||||
color="#4F46E5",
|
||||
reminder_minutes=30,
|
||||
),
|
||||
)
|
||||
|
||||
class _FakeRepository:
|
||||
def __init__(self, session) -> None:
|
||||
del session
|
||||
|
||||
monkeypatch.setattr(
|
||||
"core.agent.infrastructure.crewai.tools.create_calendar_event_tool.ScheduleItemService",
|
||||
_FakeService,
|
||||
)
|
||||
monkeypatch.setattr(
|
||||
"core.agent.infrastructure.crewai.tools.create_calendar_event_tool.SQLAlchemyScheduleItemRepository",
|
||||
_FakeRepository,
|
||||
)
|
||||
|
||||
result = cast(
|
||||
dict[str, object],
|
||||
await _execute_mutate_calendar_event(
|
||||
session=cast(AsyncSession, SimpleNamespace()),
|
||||
owner_id=uuid4(),
|
||||
tool_args={
|
||||
"operation": "update",
|
||||
"eventId": str(event_id),
|
||||
"reminderMinutes": 30,
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
data = cast(dict[str, object], result["data"])
|
||||
assert data["reminderMinutes"] == 30
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
|
||||
Reference in New Issue
Block a user