79 lines
2.9 KiB
Python
79 lines
2.9 KiB
Python
"""End-to-end integration tests for Polymarket agent."""
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
|
|
def test_graph_compiles_with_all_analysts():
|
|
"""Verify the graph compiles without errors."""
|
|
with patch("tradingagents.graph.trading_graph.create_llm_client") as mock_client:
|
|
mock_llm = MagicMock()
|
|
mock_client.return_value = MagicMock(get_llm=lambda: mock_llm)
|
|
|
|
from tradingagents.graph.trading_graph import TradingAgentsGraph
|
|
graph = TradingAgentsGraph(
|
|
selected_analysts=["odds", "social", "news", "event"],
|
|
debug=False,
|
|
)
|
|
assert graph.graph is not None
|
|
|
|
|
|
def test_graph_compiles_with_single_analyst():
|
|
"""Verify the graph works with a single analyst."""
|
|
with patch("tradingagents.graph.trading_graph.create_llm_client") as mock_client:
|
|
mock_llm = MagicMock()
|
|
mock_client.return_value = MagicMock(get_llm=lambda: mock_llm)
|
|
|
|
from tradingagents.graph.trading_graph import TradingAgentsGraph
|
|
graph = TradingAgentsGraph(
|
|
selected_analysts=["odds"],
|
|
debug=False,
|
|
)
|
|
assert graph.graph is not None
|
|
|
|
|
|
def test_initial_state_has_correct_fields():
|
|
"""Verify initial state matches AgentState schema."""
|
|
from tradingagents.graph.propagation import Propagator
|
|
prop = Propagator()
|
|
state = prop.create_initial_state("test-event-id", "Will X happen?", "2026-03-21")
|
|
|
|
assert state["event_id"] == "test-event-id"
|
|
assert state["event_question"] == "Will X happen?"
|
|
assert state["odds_report"] == ""
|
|
assert state["event_report"] == ""
|
|
assert state["trader_plan"] == ""
|
|
assert state["final_decision"] == ""
|
|
assert "timing_history" in state["investment_debate_state"]
|
|
assert "latest_speaker" in state["investment_debate_state"]
|
|
assert state["investment_debate_state"]["count"] == 0
|
|
|
|
|
|
def test_initial_state_has_no_old_fields():
|
|
"""Verify old stock-related fields are absent."""
|
|
from tradingagents.graph.propagation import Propagator
|
|
prop = Propagator()
|
|
state = prop.create_initial_state("evt", "Q?", "2026-01-01")
|
|
|
|
assert "company_of_interest" not in state
|
|
assert "market_report" not in state
|
|
assert "fundamentals_report" not in state
|
|
assert "trader_investment_plan" not in state
|
|
assert "final_trade_decision" not in state
|
|
|
|
|
|
def test_signal_processor_json_output():
|
|
"""Verify signal processor returns valid JSON."""
|
|
import json
|
|
from tradingagents.graph.signal_processing import SignalProcessor
|
|
|
|
mock_llm = MagicMock()
|
|
mock_llm.invoke.return_value = MagicMock(
|
|
content='{"action": "YES", "confidence": 0.8, "edge": 0.15, "position_size": 0.05, "reasoning": "Strong evidence", "time_horizon": "2 weeks"}'
|
|
)
|
|
|
|
processor = SignalProcessor(mock_llm)
|
|
result = processor.process_signal("Analysis text")
|
|
parsed = json.loads(result)
|
|
assert parsed["action"] == "YES"
|
|
assert parsed["confidence"] == 0.8
|
|
assert "edge" in parsed
|