| 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 | |