myrmidon / python /tests /services /projects /test_task_service.py
tek Atrust
chore(deploy): build monolithic server for Hugging Face
d5ef46f
Raw
History Blame Contribute Delete
2.66 kB
import asyncio
import unittest
from unittest.mock import AsyncMock, MagicMock, patch
import pytest
from src.server.services.projects.task_service import TaskService
from src.server.services.shared_constants import AI_AGENT_ROLES
@pytest.mark.asyncio
class TestTaskServiceAIAssignment(unittest.TestCase):
@patch("src.server.services.projects.task_service.agent_service")
async def test_create_task_with_ai_assignee_notifies_agent_service(self, mock_agent_service):
mock_agent_service.run_agent_task = AsyncMock()
mock_supabase_client = MagicMock()
task_service = TaskService(supabase_client=mock_supabase_client)
ai_agent_name = "Supervisor"
ai_agent_id = AI_AGENT_ROLES["Supervisor (Group Chat)"]
task_id = "task-abc"
mock_task_data = {"id": task_id, "assignee": ai_agent_name, "assignee_id": ai_agent_id, "project_id": "p1", "title": "t1"}
execute_mock = MagicMock()
execute_mock.data = [mock_task_data]
mock_supabase_client.table.return_value.insert.return_value.execute.return_value = execute_mock
await task_service.create_task(project_id="p1", title="t1", assignee=ai_agent_name, assignee_id=ai_agent_id)
await asyncio.sleep(0.01)
mock_agent_service.run_agent_task.assert_awaited_once_with(task_id=task_id, agent_id=ai_agent_id)
@patch("src.server.services.projects.task_service.agent_service")
async def test_update_task_to_ai_assignee_notifies_agent_service(self, mock_agent_service):
mock_agent_service.run_agent_task = AsyncMock()
mock_supabase_client = MagicMock()
task_service = TaskService(supabase_client=mock_supabase_client)
ai_agent_name = list(AI_AGENT_ROLES)[0]
task_id = "task-xyz"
mock_current_task = {"id": task_id, "assignee": "human-user"}
mock_updated_task = {"id": task_id, "assignee": ai_agent_name}
get_execute_mock = MagicMock()
get_execute_mock.data = [mock_current_task]
mock_supabase_client.table.return_value.select.return_value.eq.return_value.execute.return_value = (
get_execute_mock
)
update_execute_mock = MagicMock()
update_execute_mock.data = [mock_updated_task]
mock_supabase_client.table.return_value.update.return_value.eq.return_value.execute.return_value = (
update_execute_mock
)
update_fields = {"assignee": ai_agent_name}
await task_service.update_task(task_id, update_fields)
await asyncio.sleep(0.01)
mock_agent_service.run_agent_task.assert_awaited_once_with(task_id=task_id, agent_id=ai_agent_name)