Files
voidea/tests/unit/agents/test_rollout_agent.py
T

78 lines
2.3 KiB
Python

"""Tests for RolloutAgent."""
import pytest
from app.agents.rollout_agent import RolloutAgent
@pytest.fixture
def rollout_agent():
return RolloutAgent()
@pytest.mark.asyncio
async def test_rollout_agent_initialization(rollout_agent):
"""Test RolloutAgent initializes correctly."""
assert rollout_agent.name == "rollout_agent"
assert rollout_agent.version == "1.0.0"
assert rollout_agent._current_stage == 0
@pytest.mark.asyncio
async def test_rollout_agent_health_check(rollout_agent):
"""Test RolloutAgent health check."""
result = await rollout_agent.health_check()
assert result is True
@pytest.mark.asyncio
async def test_rollout_agent_get_status(rollout_agent):
"""Test RolloutAgent get status."""
result = await rollout_agent._get_status()
assert result.success
assert "current_stage" in result.data
assert result.data["stage_name"] == "development"
@pytest.mark.asyncio
async def test_rollout_agent_promote(rollout_agent):
"""Test RolloutAgent promote."""
result = await rollout_agent._promote_to_next_stage()
assert result.success
assert result.data["stage_name"] == "3_users"
@pytest.mark.asyncio
async def test_rollout_agent_rollback(rollout_agent):
"""Test RolloutAgent rollback."""
await rollout_agent._promote_to_next_stage()
result = await rollout_agent._rollback(0)
assert result.success
assert result.data.get("rollback_history")
@pytest.mark.asyncio
async def test_rollout_agent_pause_resume(rollout_agent):
"""Test RolloutAgent pause and resume."""
pause_result = await rollout_agent._pause_rollout()
assert pause_result.success
resume_result = await rollout_agent._resume_rollout()
assert resume_result.success
@pytest.mark.asyncio
async def test_rollout_agent_health_check_metrics(rollout_agent):
"""Test RolloutAgent health check."""
result = await rollout_agent._check_stage_health()
assert hasattr(result, "success")
assert "metrics" in result.data
assert "issues" in result.data
@pytest.mark.asyncio
async def test_rollout_agent_final_stage_cannot_promote(rollout_agent):
"""Test RolloutAgent cannot promote past final stage."""
rollout_agent._current_stage = 5
result = await rollout_agent._promote_to_next_stage()
assert result.success is False