from src.domain.models.task import Task, TaskUpdate def test_task_can_start_and_stop(): task = Task( id=1, task_name="Sony A7M4", enabled=True, keyword="sony a7m4", description="body", max_pages=2, personal_only=True, min_price=None, max_price=None, cron=None, ai_prompt_base_file="prompts/base_prompt.txt", ai_prompt_criteria_file="prompts/sony_a7m4_criteria.txt", is_running=False, ) assert task.can_start() is True assert task.can_stop() is False running = task.copy(update={"is_running": True}) assert running.can_start() is False assert running.can_stop() is True def test_task_apply_update(): task = Task( id=1, task_name="Sony A7M4", enabled=True, keyword="sony a7m4", description="body", max_pages=2, personal_only=True, min_price=None, max_price=None, cron=None, ai_prompt_base_file="prompts/base_prompt.txt", ai_prompt_criteria_file="prompts/sony_a7m4_criteria.txt", is_running=False, ) update = TaskUpdate(enabled=False, max_pages=5) updated = task.apply_update(update) assert updated.enabled is False assert updated.max_pages == 5 assert updated.task_name == task.task_name