"""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()