Files
XCClaw/tests/test_scheduler.py

69 lines
2.1 KiB
Python

import pytest
import asyncio
from app.services.scheduler import SchedulerService, ScheduleTask
class TestSchedulerService:
@pytest.fixture(autouse=True)
def setup(self, mock_settings):
self.service = SchedulerService()
self.service.scheduled_tasks = {}
@pytest.mark.asyncio
async def test_add_schedule(self):
task = ScheduleTask(
id="schedule-1",
name="Daily Task",
cron="0 9 * * *",
prompt="run daily task",
enabled=True,
)
result = await self.service.add_schedule(task)
assert result.id == "schedule-1"
assert result.name == "Daily Task"
assert "schedule-1" in self.service.scheduled_tasks
@pytest.mark.asyncio
async def test_remove_schedule(self):
task = ScheduleTask(
id="schedule-1",
name="Task to remove",
cron="0 9 * * *",
prompt="test",
enabled=True,
)
await self.service.add_schedule(task)
result = await self.service.remove_schedule("schedule-1")
assert result is True
assert "schedule-1" not in self.service.scheduled_tasks
@pytest.mark.asyncio
async def test_remove_nonexistent_schedule(self):
result = await self.service.remove_schedule("nonexistent")
assert result is False
@pytest.mark.asyncio
async def test_list_schedules(self):
task1 = ScheduleTask(id="s1", name="Task 1", cron="0 9 * * *", prompt="t1")
task2 = ScheduleTask(id="s2", name="Task 2", cron="0 10 * * *", prompt="t2")
await self.service.add_schedule(task1)
await self.service.add_schedule(task2)
schedules = await self.service.list_schedules()
assert len(schedules) == 2
@pytest.mark.asyncio
@pytest.mark.skip(reason="Requires event loop in test environment")
async def test_start_and_shutdown(self):
self.service.start()
assert self.service.scheduler.running is True
self.service.shutdown()
assert self.service.scheduler.running is False