Spaces:
Running
Running
| 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 | |
| def decomposer(): | |
| return QueryDecomposerService() | |
| 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() | |