81 lines
2.2 KiB
Python
81 lines
2.2 KiB
Python
"""Tests for AgentRegistry."""
|
|
|
|
import pytest
|
|
|
|
from app.agents.registry import AgentRegistry, get_agent, get_all_agents
|
|
|
|
|
|
@pytest.fixture
|
|
def registry():
|
|
return AgentRegistry()
|
|
|
|
|
|
def test_registry_initialization(registry):
|
|
"""Test registry initializes with all agents."""
|
|
agents = registry.list_agents()
|
|
assert len(agents) >= 5
|
|
agent_names = [a["name"] for a in agents]
|
|
assert "doc_agent" in agent_names
|
|
assert "backlog_agent" in agent_names
|
|
assert "spec_agent" in agent_names
|
|
assert "audit_agent" in agent_names
|
|
assert "observer_agent" in agent_names
|
|
assert "evolution_agent" in agent_names
|
|
|
|
|
|
def test_get_agent(registry):
|
|
"""Test getting specific agent."""
|
|
agent = registry.get("doc_agent")
|
|
assert agent is not None
|
|
assert agent.name == "doc_agent"
|
|
|
|
|
|
def test_get_nonexistent_agent(registry):
|
|
"""Test getting non-existent agent."""
|
|
agent = registry.get("nonexistent_agent")
|
|
assert agent is None
|
|
|
|
|
|
def test_list_agents(registry):
|
|
"""Test listing all agents."""
|
|
agents = registry.list_agents()
|
|
assert isinstance(agents, list)
|
|
assert all("name" in a for a in agents)
|
|
assert all("status" in a for a in agents)
|
|
|
|
|
|
def test_get_all_agents_function():
|
|
"""Test get_all_agents function."""
|
|
agents = get_all_agents()
|
|
assert isinstance(agents, list)
|
|
assert len(agents) > 0
|
|
|
|
|
|
def test_get_agent_function():
|
|
"""Test get_agent function."""
|
|
agent = get_agent("spec_agent")
|
|
assert agent is not None
|
|
assert agent.name == "spec_agent"
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_run_nonexistent_agent(registry):
|
|
"""Test running non-existent agent."""
|
|
result = await registry.run_agent("nonexistent")
|
|
assert result.success is False
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_health_check_all(registry):
|
|
"""Test health check for all agents."""
|
|
results = await registry.health_check_all()
|
|
assert isinstance(results, dict)
|
|
assert all(isinstance(v, bool) for v in results.values())
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_get_metrics_all(registry):
|
|
"""Test getting metrics for all agents."""
|
|
metrics = registry.get_metrics_all()
|
|
assert isinstance(metrics, dict)
|
|
assert all("status" in m for m in metrics.values()) |