Quellcode durchsuchen

fix: update workflow service tests for new graph engine

- Update method calls from _handle_node_run_result to _handle_single_step_result
- Add required fields (id, node_id, node_type, start_at) to graph events
- Use proper NodeType enum values instead of strings
- Fix imports to use correct modules (Node instead of BaseNode)
- Ensure event generators return proper generator objects

These tests were failing because the internal implementation changed
with the new graph engine architecture.
tags/2.0.0-beta.1
-LAN- vor 2 Monaten
Ursprung
Commit
d8af8ae4e6
Es ist kein Account mit der E-Mail-Adresse des Committers verbunden

+ 44
- 13
api/tests/test_containers_integration_tests/services/test_workflow_service.py Datei anzeigen



# Mock successful node execution # Mock successful node execution
def mock_successful_invoke(): def mock_successful_invoke():
from core.workflow.enums import WorkflowNodeExecutionStatus
import uuid
from datetime import datetime

from core.workflow.enums import NodeType, WorkflowNodeExecutionStatus
from core.workflow.graph_events import NodeRunSucceededEvent from core.workflow.graph_events import NodeRunSucceededEvent
from core.workflow.node_events import NodeRunResult from core.workflow.node_events import NodeRunResult
from core.workflow.nodes.base.node import Node from core.workflow.nodes.base.node import Node


# Create mock node # Create mock node
mock_node = MagicMock(spec=Node) mock_node = MagicMock(spec=Node)
mock_node.node_type = "start" # Use valid NodeType
mock_node.node_type = NodeType.START
mock_node.title = "Test Node" mock_node.title = "Test Node"
mock_node.error_strategy = None mock_node.error_strategy = None


metadata={"total_tokens": 100}, # Use valid metadata field metadata={"total_tokens": 100}, # Use valid metadata field
) )


# Create mock event
mock_event = NodeRunSucceededEvent(node_run_result=mock_result)
# Create mock event with all required fields
mock_event = NodeRunSucceededEvent(
id=str(uuid.uuid4()),
node_id=node_id,
node_type=NodeType.START,
node_run_result=mock_result,
start_at=datetime.now(),
)


# Return node and generator # Return node and generator
def event_generator(): def event_generator():
# Assert # Assert
assert result is not None assert result is not None
assert result.node_id == node_id assert result.node_id == node_id
assert result.node_type == "start" # Should match the mock node type
from core.workflow.enums import NodeType

assert result.node_type == NodeType.START # Should match the mock node type
assert result.title == "Test Node" assert result.title == "Test Node"
# Import the enum for comparison # Import the enum for comparison
from core.workflow.enums import WorkflowNodeExecutionStatus from core.workflow.enums import WorkflowNodeExecutionStatus


# Mock failed node execution # Mock failed node execution
def mock_failed_invoke(): def mock_failed_invoke():
from core.workflow.enums import WorkflowNodeExecutionStatus
import uuid
from datetime import datetime

from core.workflow.enums import NodeType, WorkflowNodeExecutionStatus
from core.workflow.graph_events import NodeRunFailedEvent from core.workflow.graph_events import NodeRunFailedEvent
from core.workflow.node_events import NodeRunResult from core.workflow.node_events import NodeRunResult
from core.workflow.nodes.base.node import Node from core.workflow.nodes.base.node import Node


# Create mock node # Create mock node
mock_node = MagicMock(spec=Node) mock_node = MagicMock(spec=Node)
mock_node.node_type = "llm" # Use valid NodeType
mock_node.node_type = NodeType.LLM
mock_node.title = "Test Node" mock_node.title = "Test Node"
mock_node.error_strategy = None mock_node.error_strategy = None


error="Test error message", error="Test error message",
) )


# Create mock event
mock_event = NodeRunFailedEvent(node_run_result=mock_result)
# Create mock event with all required fields
mock_event = NodeRunFailedEvent(
id=str(uuid.uuid4()),
node_id=node_id,
node_type=NodeType.LLM,
node_run_result=mock_result,
error="Test error message",
start_at=datetime.now(),
)


# Return node and generator # Return node and generator
def event_generator(): def event_generator():


# Mock node execution with continue_on_error # Mock node execution with continue_on_error
def mock_continue_on_error_invoke(): def mock_continue_on_error_invoke():
from core.workflow.enums import ErrorStrategy, WorkflowNodeExecutionStatus
import uuid
from datetime import datetime

from core.workflow.enums import ErrorStrategy, NodeType, WorkflowNodeExecutionStatus
from core.workflow.graph_events import NodeRunFailedEvent from core.workflow.graph_events import NodeRunFailedEvent
from core.workflow.node_events import NodeRunResult from core.workflow.node_events import NodeRunResult
from core.workflow.nodes.base.node import Node from core.workflow.nodes.base.node import Node


# Create mock node with continue_on_error # Create mock node with continue_on_error
mock_node = MagicMock(spec=Node) mock_node = MagicMock(spec=Node)
mock_node.node_type = "tool" # Use valid NodeType
mock_node.node_type = NodeType.TOOL
mock_node.title = "Test Node" mock_node.title = "Test Node"
mock_node.error_strategy = ErrorStrategy.DEFAULT_VALUE mock_node.error_strategy = ErrorStrategy.DEFAULT_VALUE
mock_node.default_value_dict = {"default_output": "default_value"} mock_node.default_value_dict = {"default_output": "default_value"}
error="Test error message", error="Test error message",
) )


# Create mock event
mock_event = NodeRunFailedEvent(node_run_result=mock_result)
# Create mock event with all required fields
mock_event = NodeRunFailedEvent(
id=str(uuid.uuid4()),
node_id=node_id,
node_type=NodeType.TOOL,
node_run_result=mock_result,
error="Test error message",
start_at=datetime.now(),
)


# Return node and generator # Return node and generator
def event_generator(): def event_generator():

Laden…
Abbrechen
Speichern