RAGForge / tests /test_lifecycle_policy.py
ArchitSharma's picture
Upgrade RAGForge to v1.2 UX and lifecycle hardening
d6ee0a6
Raw
History Blame Contribute Delete
1.35 kB
import pytest
pytest.importorskip("langgraph")
from ragforge.pipeline import RAGEngine
from ragforge.schemas import PipelineConfig
class _SQLStub:
tables = {}
class _EmptyWorkspace:
chunks = []
source_profiles = {}
sql = _SQLStub()
history = []
def manifest(self, *args, **kwargs):
return "No unstructured documents are indexed. Structured tables: none."
def test_document_route_preflight_abstains_before_retrieval():
engine = object.__new__(RAGEngine)
engine.workspace = _EmptyWorkspace()
state = {
"query": "What are the documents about?",
"config": PipelineConfig(mode="Documents", profile="Fast"),
"trace": {"nodes": []},
}
out = engine._route(state)
assert out["route"] == "documents"
assert out["abstain_reason"] == "workspace_empty_documents"
def test_abstain_is_terminal_operational_response():
engine = object.__new__(RAGEngine)
engine.workspace = _EmptyWorkspace()
state = {
"abstain_reason": "workspace_empty_documents",
"doc_hits": [],
"web_hits": [],
"trace": {"nodes": []},
}
out = engine._abstain(state)
assert "No document corpus is indexed" in out["answer"]
assert out["sources"] == []
assert out["confidence"] >= 0.9
assert out["trace"]["nodes"][-1]["node"] == "abstain"