60 lines
2.7 KiB
Gherkin
60 lines
2.7 KiB
Gherkin
Feature: LangGraph nodes coverage
|
|
As a developer
|
|
I want to cover uncovered branches in langgraph nodes
|
|
So that node behaviors are verified and coverage improves
|
|
|
|
Scenario: Conversation history truncates by message count
|
|
Given a node with history limit 2 messages
|
|
And a conversation history of 3 short messages
|
|
When I prepare the conversation history
|
|
Then it should return 2 messages and indicate truncation
|
|
|
|
Scenario: Agent node falls back when agent instance is missing
|
|
Given an agent node referencing a missing agent
|
|
When I execute the agent node
|
|
Then it should return a not found assistant message
|
|
|
|
Scenario: Tool agent uses current_message metadata for input
|
|
Given a tool agent node with a current_message "override" and long history
|
|
When I execute the tool agent node
|
|
Then the tool agent should receive input "override"
|
|
And the response metadata should include last_agent_node
|
|
|
|
Scenario: Function node runs async function
|
|
Given a function node with an async function
|
|
When I execute the function node
|
|
Then the function result message should be "async-result"
|
|
|
|
Scenario: Function node awaits coroutine returned from sync function
|
|
Given a function node with a sync function that returns a coroutine
|
|
When I execute the function node
|
|
Then the function result message should be "sync-inner"
|
|
|
|
Scenario: Conditional node detects assistant field match
|
|
Given a conditional node looking for field "status" equals "OK"
|
|
When I execute the conditional node with matching assistant message
|
|
Then the condition_result should be true and metadata flagged
|
|
|
|
Scenario: Message router selects rule based on field condition
|
|
Given a message router node with a rule matching field "topic" value "urgent"
|
|
When I execute the message router with current_message containing topic "urgent"
|
|
Then it should route to "urgent_node"
|
|
|
|
Scenario: Edge condition checks equals against latest message
|
|
Given an edge with equals condition on field "content" value "done"
|
|
When I evaluate the edge condition with matching last message
|
|
Then the edge condition should be true
|
|
And evaluating with no messages should also default to true
|
|
|
|
Scenario: Eval condition supports equals and field comparisons
|
|
Given I evaluate equals condition on message "abc"
|
|
Then the equals evaluation should return true
|
|
When I evaluate field condition on message dict with foo value "bar"
|
|
Then the field evaluation should return true
|
|
When I evaluate field condition on non-dict message
|
|
Then it should return false
|
|
|
|
Scenario: Node parallel execution flag reflects configuration
|
|
Given a node configured for parallel execution
|
|
Then can_execute_parallel should return true
|