!/usr/bin/env python3
"""Test script for Brain Query API.
Run with: python3 test_brain_api.py
This tests the API endpoints without needing the server running.
"""
import asyncio
import sys
sys.path.insert(0, '/home/hoffmann_admin/.openclaw/workspace-socrates/hoffdesk-api')
from brain.router import (
brain_query,
brain_stats,
brain_health,
list_patterns,
QueryRequest
)
async def test_health():
"""Test health endpoint."""
print("=== Health Check ===")
health = await brain_health()
print(f"Status: {health.status}")
print(f"ChromaDB Available: {health.chromadb_available}")
print(f"Collection Ready: {health.collection_ready}")
print()
async def test_stats():
"""Test stats endpoint."""
print("=== Stats ===")
stats = await brain_stats()
print(f"Total Chunks: {stats.total_chunks}")
print(f"Collection: {stats.collection_name}")
print(f"Directory: {stats.persist_directory}")
print()
async def test_patterns():
"""Test patterns endpoint."""
print("=== Available Patterns ===")
patterns = await list_patterns()
for name, info in patterns.items():
print(f"\n{name.upper()}:")
print(f" Description: {info['description']}")
print(f" Decay: {info['decay']}")
print(f" Examples: {', '.join(info['examples'][:2])}")
print()
async def test_queries():
"""Test query endpoints."""
print("=== Query Tests ===\n")
test_cases = [
("Is Friday a half-day?", "logistical"),
("What size is our HVAC filter?", "entity"),
("What was the roofer's name?", "historical"),
]
for query, expected_pattern in test_cases:
print(f"Query: '{query}'")
print(f"Expected Pattern: {expected_pattern}")
request = QueryRequest(query=query, pattern="auto", n_results=3)
response = await brain_query(request)
print(f"Pattern Used: {response.pattern_used}")
print(f"Confidence: {response.confidence:.2f} - {response.confidence_message}")
print(f"Answer: {response.answer[:150]}...")
print(f"Sources: {len(response.sources)}")
for s in response.sources[:2]:
print(f" - {s.doc_id} ({s.type}, {s.date})")
print()
async def main():
"""Run all tests."""
print("=" * 60)
print("Brain Query Interface - API Test")
print("=" * 60)
print()
await test_health()
await test_stats()
await test_patterns()
await test_queries()
print("=" * 60)
print("All tests complete!")
print("=" * 60)
if name == "main":
asyncio.run(main())