This repository has been archived on 2026-03-24. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Timmy-time-dashboard/tests/test_openfang_executor.py
2026-02-28 19:27:48 -05:00

121 lines
4.6 KiB
Python

"""Chunk 4: ToolExecutor OpenFang delegation — test first, implement second.
Tests cover:
- When openfang_enabled=True and client healthy → delegates to OpenFang
- When openfang_enabled=False → falls back to existing behavior
- When OpenFang is down → falls back gracefully
- Hand matching from task descriptions
"""
from unittest.mock import AsyncMock, MagicMock, patch
import pytest
# ---------------------------------------------------------------------------
# Hand matching (pure function, no mocking needed)
# ---------------------------------------------------------------------------
def test_match_hand_from_description():
"""_match_openfang_hand should detect relevant hand from task text."""
from swarm.tool_executor import _match_openfang_hand
assert _match_openfang_hand("browse https://example.com") == "browser"
assert _match_openfang_hand("navigate to the website") == "browser"
assert _match_openfang_hand("collect OSINT on target.com") == "collector"
assert _match_openfang_hand("predict whether Bitcoin hits 100k") == "predictor"
assert _match_openfang_hand("forecast the election outcome") == "predictor"
assert _match_openfang_hand("find leads matching our ICP") == "lead"
assert _match_openfang_hand("prospect discovery for SaaS") == "lead"
assert _match_openfang_hand("research quantum computing") == "researcher"
assert _match_openfang_hand("investigate the supply chain") == "researcher"
assert _match_openfang_hand("post a tweet about our launch") == "twitter"
assert _match_openfang_hand("process this video clip") == "clip"
def test_match_hand_returns_none_for_unmatched():
"""Tasks with no OpenFang-relevant keywords return None."""
from swarm.tool_executor import _match_openfang_hand
assert _match_openfang_hand("write a Python function") is None
assert _match_openfang_hand("fix the database migration") is None
# ---------------------------------------------------------------------------
# Delegation when enabled + healthy
# ---------------------------------------------------------------------------
@pytest.mark.asyncio
async def test_openfang_delegation_when_enabled():
"""When openfang is enabled and healthy, try_openfang_execution delegates."""
from infrastructure.openfang.client import HandResult
mock_result = HandResult(
hand="browser",
success=True,
output="OpenFang executed the task",
)
mock_client = MagicMock()
mock_client.healthy = True
mock_client.execute_hand = AsyncMock(return_value=mock_result)
with patch("swarm.tool_executor.settings") as mock_settings, \
patch("infrastructure.openfang.client.openfang_client", mock_client), \
patch.dict("sys.modules", {}): # force re-import
mock_settings.openfang_enabled = True
# Re-import to pick up patches
from swarm.tool_executor import try_openfang_execution
# Patch the lazy import inside try_openfang_execution
with patch(
"infrastructure.openfang.client.openfang_client", mock_client
):
result = await try_openfang_execution(
"browse https://example.com and extract headlines"
)
assert result is not None
assert result["success"] is True
assert "OpenFang" in result["result"]
# ---------------------------------------------------------------------------
# Fallback when disabled
# ---------------------------------------------------------------------------
@pytest.mark.asyncio
async def test_openfang_returns_none_when_disabled():
"""When openfang is disabled, try_openfang_execution returns None."""
with patch("swarm.tool_executor.settings") as mock_settings:
mock_settings.openfang_enabled = False
from swarm.tool_executor import try_openfang_execution
result = await try_openfang_execution("browse something")
assert result is None
# ---------------------------------------------------------------------------
# Fallback when down
# ---------------------------------------------------------------------------
@pytest.mark.asyncio
async def test_openfang_returns_none_when_down():
"""When openfang is enabled but unhealthy, returns None (fallback)."""
mock_client = MagicMock()
mock_client.healthy = False
with patch("swarm.tool_executor.settings") as mock_settings, \
patch(
"infrastructure.openfang.client.openfang_client", mock_client
):
mock_settings.openfang_enabled = True
from swarm.tool_executor import try_openfang_execution
result = await try_openfang_execution("browse something")
assert result is None