Files
matrix-ai-agent/tests/test_cron_executor.py
Christian Gick 4d8ea44b3d feat(MAT-174): Add cron job scheduler and executors
Cron package that syncs jobs from matrixhost portal API, schedules execution
with timezone-aware timing, and posts results to Matrix rooms. Includes
Brave Search, reminder, and browser scrape (placeholder) executors with
formatter. 31 pytest tests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 09:31:19 +02:00

49 lines
1.6 KiB
Python

"""Tests for the cron executor dispatch."""
from unittest.mock import AsyncMock
import pytest
from cron.executor import execute_job
class TestExecuteJob:
@pytest.mark.asyncio
async def test_unknown_job_type_returns_error(self):
job = {"jobType": "nonexistent", "config": {}}
result = await execute_job(
job=job, send_text=AsyncMock(), matrix_client=None
)
assert result["status"] == "error"
assert "Unknown job type" in result["error"]
@pytest.mark.asyncio
async def test_dispatches_to_reminder(self):
job = {
"id": "j1",
"name": "Test Reminder",
"jobType": "reminder",
"config": {"message": "Don't forget!"},
"targetRoom": "!room:test",
}
send_text = AsyncMock()
result = await execute_job(job=job, send_text=send_text, matrix_client=None)
assert result["status"] == "success"
send_text.assert_called_once()
assert "Don't forget!" in send_text.call_args[0][1]
@pytest.mark.asyncio
async def test_dispatches_to_browser_scrape_no_profile(self):
job = {
"id": "j1",
"name": "Scrape Test",
"jobType": "browser_scrape",
"config": {"url": "https://example.com"},
"targetRoom": "!room:test",
"browserProfile": None,
}
send_text = AsyncMock()
result = await execute_job(job=job, send_text=send_text, matrix_client=None)
assert result["status"] == "error"
assert "browser profile" in result["error"].lower()