Spaces:
Running
Running
import pytest | |
from unittest.mock import patch, ANY, AsyncMock # Removed MagicMock as it's in conftest | |
import importlib # Import importlib for reloading | |
# Removed local mock definitions for StateGraph | |
# They will be provided by fixtures from conftest.py | |
# Mock for the planner_agent function (if needed for specific tests, otherwise remove) | |
# mock_planner_agent_func = AsyncMock(name="mock_run_planner_agent_func") # Keep if used, otherwise remove | |
# Import the correct InsightFlowState for type checking in assertions | |
from insight_state import InsightFlowState | |
# Patched at source | |
def test_langgraph_basic_setup(mock_state_graph_class_actual): | |
"""Test that StateGraph is initialized with the correct state type and entry point is set.""" | |
import app | |
importlib.reload(app) # Force reload app module AFTER mocks are applied | |
# The InsightFlowState used in app.StateGraph(InsightFlowState) should be the one from state.py | |
# Check that StateGraph was called with InsightFlowState at least once (due to reload) | |
mock_state_graph_class_actual.assert_any_call(InsightFlowState) | |
# Get the instance from the last call (which is the one relevant to the reloaded app module) | |
mock_sg_instance = mock_state_graph_class_actual.return_value | |
# set_entry_point will also be called multiple times due to reload | |
mock_sg_instance.set_entry_point.assert_any_call("planner_agent") | |
# Patched at source | |
def test_langgraph_adds_planner_node(mock_state_graph_class_actual): | |
"""Test that the planner_agent node is added to the graph.""" | |
import app | |
importlib.reload(app) | |
mock_sg_instance = mock_state_graph_class_actual.return_value | |
# Assert that add_node was called with "planner_agent" and some callable | |
# We can get more specific by checking the actual function if app.run_planner_agent is accessible | |
mock_sg_instance.add_node.assert_any_call("planner_agent", app.run_planner_agent) | |
# Patched at source | |
def test_langgraph_adds_execute_persona_tasks_node(mock_state_graph_class_actual): | |
"""Test that the execute_persona_tasks node is added.""" | |
import app | |
importlib.reload(app) | |
mock_sg_instance = mock_state_graph_class_actual.return_value | |
mock_sg_instance.add_node.assert_any_call("execute_persona_tasks", app.execute_persona_tasks) | |
# Patched at source | |
def test_langgraph_adds_synthesize_responses_node(mock_state_graph_class_actual): | |
"""Test that the synthesize_responses node is added.""" | |
import app | |
importlib.reload(app) | |
mock_sg_instance = mock_state_graph_class_actual.return_value | |
mock_sg_instance.add_node.assert_any_call("synthesize_responses", app.synthesize_responses) | |
# Patched at source | |
def test_langgraph_adds_generate_visualization_node(mock_state_graph_class_actual): | |
"""Test that the generate_visualization node is added.""" | |
import app | |
importlib.reload(app) | |
mock_sg_instance = mock_state_graph_class_actual.return_value | |
mock_sg_instance.add_node.assert_any_call("generate_visualization", app.generate_visualization) | |
# Patched at source | |
def test_langgraph_adds_present_results_node(mock_state_graph_class_actual): | |
"""Test that the present_results node is added.""" | |
import app | |
importlib.reload(app) | |
mock_sg_instance = mock_state_graph_class_actual.return_value | |
mock_sg_instance.add_node.assert_any_call("present_results", app.present_results) |