fix(test): move advanced context strategy test doubles to features/mocks
- Extract FakeEmbeddings, RelevanceScoringStrategy, AdaptiveContextSelector, ContextFusionStrategy, and _pack_budget from features/steps/ into new features/mocks/advanced_context_strategies_mocks.py per mock-placement rules - Remove sys.path manipulation from robot/helper_advanced_context_strategies.py; import directly from features.mocks instead of features/steps - Add None guard before selected.assemble() in step_assemble_context_query - Add explicit ValueError for unknown strategy types in step_load_yaml_strategy and load_strategy_from_yaml_impl ISSUES CLOSED: #7574
This commit is contained in:
@@ -2,10 +2,14 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
from features.mocks.advanced_context_strategies_mocks import (
|
||||
AdaptiveContextSelector,
|
||||
ContextFusionStrategy,
|
||||
RelevanceScoringStrategy,
|
||||
)
|
||||
|
||||
from cleveragents.application.services.context_strategies import (
|
||||
BreadthDepthNavigatorStrategy,
|
||||
SemanticEmbeddingStrategy,
|
||||
@@ -19,16 +23,6 @@ from cleveragents.domain.models.core.context_fragment import (
|
||||
# Default provenance used for test fragments (no real resource needed).
|
||||
_TEST_PROVENANCE = FragmentProvenance(resource_uri="test://fixture")
|
||||
|
||||
# Import from step definitions
|
||||
features_path = Path(__file__).parent.parent / "features" / "steps"
|
||||
sys.path.insert(0, str(features_path))
|
||||
|
||||
from advanced_context_strategies_steps import ( # noqa: E402
|
||||
AdaptiveContextSelector,
|
||||
ContextFusionStrategy,
|
||||
RelevanceScoringStrategy,
|
||||
)
|
||||
|
||||
|
||||
def create_semantic_search_strategy_impl() -> SemanticEmbeddingStrategy:
|
||||
"""Create a semantic search strategy with FakeEmbeddings."""
|
||||
@@ -80,9 +74,7 @@ def create_test_fragments_impl(args: list[str]) -> list[ContextFragment]:
|
||||
return fragments
|
||||
|
||||
|
||||
def create_context_budget_impl(
|
||||
max_tokens: int, reserved_tokens: int
|
||||
) -> ContextBudget:
|
||||
def create_context_budget_impl(max_tokens: int, reserved_tokens: int) -> ContextBudget:
|
||||
"""Create a context budget."""
|
||||
return ContextBudget(
|
||||
max_tokens=int(max_tokens),
|
||||
@@ -159,8 +151,8 @@ def load_strategy_from_yaml_impl(config: dict[str, Any]) -> Any:
|
||||
elif strategy_type == "context-fusion":
|
||||
strategies = config.get("strategies", [])
|
||||
return ContextFusionStrategy(strategies)
|
||||
|
||||
return None
|
||||
else:
|
||||
raise ValueError(f"Unknown strategy type: {strategy_type!r}")
|
||||
|
||||
|
||||
def create_context_assembler_with_advanced_strategies_impl() -> dict[str, Any]:
|
||||
@@ -193,7 +185,6 @@ def assemble_context_with_query_impl(
|
||||
"""Assemble context with a query."""
|
||||
request = {"query": query}
|
||||
|
||||
# Select best strategy
|
||||
best_strategy = None
|
||||
best_confidence = 0.0
|
||||
|
||||
@@ -206,7 +197,6 @@ def assemble_context_with_query_impl(
|
||||
if best_strategy is None:
|
||||
best_strategy = assembler["strategies"][0]
|
||||
|
||||
# Set query if needed
|
||||
if hasattr(best_strategy, "set_query"):
|
||||
best_strategy.set_query(query)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user