ConstitutionAgent / tests /test_components.py
Meshyboi's picture
Upload 53 files
0cd3dc5 verified
import sys
import os
import pytest
import json
# Add project root to path
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from services.query_decomposition import QueryDecomposerService
from services.graph_planner import GraphPlannerService
from services.context_organization import ContextOrganizationService
from services.legal_reasoner import LegalReasonerService
from services.quality_assurance import QualityAssuranceService
@pytest.fixture
def decomposer():
return QueryDecomposerService()
@pytest.fixture
def planner():
return GraphPlannerService()
def test_decomposer(decomposer):
"""Test Query Decomposer returns valid JSON structure"""
query = "Explain Article 21"
result = decomposer.decompose(query)
assert isinstance(result, dict)
assert "query_type" in result
assert "intent" in result
assert "entities" in result
print(f"\n✅ Decomposer Output: {json.dumps(result, indent=2)}")
def test_planner(planner):
"""Test Graph Planner returns valid Tree Routing JSON"""
# Mock classification input
classification = {
"query_type": "simple_article",
"intent": "explain",
"entities": {"articles": ["21"]},
"raw_query": "Explain Article 21"
}
plan = planner.generate_plan(classification)
assert isinstance(plan, dict)
assert "tree_start_node" in plan
assert "cypher_queries" in plan
assert "qdrant_scope" in plan
print(f"\n✅ Planner Output: {json.dumps(plan, indent=2)}")
def test_context_organizer():
"""Test Context Organizer formats chunks"""
organizer = ContextOrganizationService()
fake_chunks = [{"text": "Article 21: No person...", "metadata": {"year": 1950}}]
context = organizer.organize_context(fake_chunks)
assert isinstance(context, dict)
assert "context_block" in context or "temporal_narrative" in context
print("\n✅ Organizer Output: SUCCESS")
if __name__ == "__main__":
# Manual run
d = QueryDecomposerService()
test_decomposer(d)
p = GraphPlannerService()
test_planner(p)
test_context_organizer()