113 lines
5.8 KiB
Gherkin
113 lines
5.8 KiB
Gherkin
Feature: Plan Generation LangGraph Coverage
|
|
As a developer
|
|
I want test coverage for the new PlanGenerationGraph LangGraph workflow in cleveragents.agents.plan_generation
|
|
So that I can ensure the workflow executes correctly
|
|
|
|
Background:
|
|
Given the langgraph plan generation module is importable
|
|
|
|
Scenario: PlanGenerationGraph LangGraph can be instantiated with default LLM
|
|
When I create a langgraph PlanGenerationGraph with no LLM
|
|
Then the langgraph graph should be initialized successfully
|
|
And the langgraph graph should have a default FakeListLLM configured
|
|
And the langgraph graph should have max_retries set to 3
|
|
|
|
Scenario: PlanGenerationGraph LangGraph can be instantiated with custom max_retries
|
|
When I create a langgraph PlanGenerationGraph with max_retries of 5
|
|
Then the langgraph graph max_retries should be 5
|
|
|
|
Scenario: PlanGenerationGraph LangGraph creates prompt templates
|
|
When I create a langgraph PlanGenerationGraph with no LLM
|
|
Then the langgraph graph should have an analyze_prompt template
|
|
And the langgraph graph should have a generate_prompt template
|
|
And the langgraph graph should have a validate_prompt template
|
|
|
|
Scenario: PlanGenerationGraph LangGraph builds workflow with correct nodes
|
|
When I create a langgraph PlanGenerationGraph with no LLM
|
|
Then the langgraph workflow graph should contain node "load_context"
|
|
And the langgraph workflow graph should contain node "analyze_requirements"
|
|
And the langgraph workflow graph should contain node "generate_plan"
|
|
And the langgraph workflow graph should contain node "validate"
|
|
|
|
Scenario: Format context summary with no files returns appropriate message
|
|
Given I have a langgraph PlanGenerationGraph instance
|
|
When I format the langgraph context summary with no contexts
|
|
Then the langgraph summary should be "No context files provided"
|
|
|
|
Scenario: Format context summary with multiple files
|
|
Given I have a langgraph PlanGenerationGraph instance
|
|
When I format the langgraph context summary with 3 contexts
|
|
Then the langgraph summary should include all 3 file paths
|
|
|
|
Scenario: Format context summary limits to five files
|
|
Given I have a langgraph PlanGenerationGraph instance
|
|
When I format the langgraph context summary with 8 contexts
|
|
Then the langgraph summary should indicate "and 3 more files"
|
|
|
|
Scenario: Load context node initializes state
|
|
Given I have a langgraph PlanGenerationGraph instance
|
|
When I execute the langgraph load_context node
|
|
Then the langgraph node result should have retry_count set to 0
|
|
And the langgraph node result should have error set to None
|
|
And the langgraph node result should include context metadata defaults
|
|
|
|
Scenario: Load context node enriches context summary
|
|
Given I have a langgraph PlanGenerationGraph instance
|
|
When I execute the langgraph load_context node with sample contexts
|
|
Then the langgraph node result should include an analyzed context summary
|
|
And the langgraph node result should include context dependencies
|
|
|
|
Scenario: Should retry returns retry when validation fails and retries available
|
|
Given I have a langgraph PlanGenerationGraph instance with max_retries 3
|
|
When I check langgraph should_retry with FAIL validation and retry_count 0
|
|
Then the langgraph retry decision should be "retry"
|
|
|
|
Scenario: Should retry returns end when validation passes
|
|
Given I have a langgraph PlanGenerationGraph instance with max_retries 3
|
|
When I check langgraph should_retry with PASS validation and retry_count 0
|
|
Then the langgraph retry decision should be "end"
|
|
|
|
Scenario: Should retry returns end when max retries reached
|
|
Given I have a langgraph PlanGenerationGraph instance with max_retries 3
|
|
When I check langgraph should_retry with FAIL validation and retry_count 3
|
|
Then the langgraph retry decision should be "end"
|
|
|
|
Scenario: Validate node fails when no changes provided
|
|
Given I have a langgraph PlanGenerationGraph instance
|
|
When I execute the langgraph validate node with no changes
|
|
Then the langgraph validation status should be "FAIL"
|
|
And the langgraph validation message should contain "No changes to validate"
|
|
|
|
Scenario: Generate plan handles missing requirements
|
|
Given I have a langgraph PlanGenerationGraph instance
|
|
When I execute the langgraph generate_plan node with no requirements
|
|
Then the langgraph generated_changes should be empty
|
|
And the langgraph error should contain "No requirements to generate from"
|
|
|
|
Scenario: Workflow invoke method returns complete state
|
|
Given I have a langgraph PlanGenerationGraph instance
|
|
And I have langgraph workflow inputs with project plan and contexts
|
|
When I invoke the langgraph workflow synchronously
|
|
Then the langgraph workflow result should contain all expected fields
|
|
|
|
Scenario: Workflow stream method yields events
|
|
Given I have a langgraph PlanGenerationGraph instance
|
|
And I have langgraph workflow inputs with project plan and contexts
|
|
When I stream the langgraph workflow execution
|
|
Then the langgraph stream should yield multiple events
|
|
|
|
Scenario: PlanGenerationGraph retries transient LLM failures
|
|
Given I have a langgraph PlanGenerationGraph instance
|
|
When I execute the langgraph analyze_requirements node with a flaky LLM that fails once
|
|
Then the langgraph analyze node should succeed after retry
|
|
|
|
Scenario: LangGraph graphs package exports workflows
|
|
Given the langgraph graphs package is importable
|
|
Then the langgraph graphs exports should include "PlanGenerationGraph"
|
|
And the langgraph graphs exports should include "ContextAnalysisAgent"
|
|
|
|
Scenario: Agents package exposes LangGraph workflows
|
|
Given the agents package is importable
|
|
Then the agents package exports should include "PlanGenerationGraph"
|
|
And the agents package exports should include "ContextAnalysisAgent"
|