📄 test_brain_api.py 2,660 bytes Apr 30, 2026 📋 Raw

!/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())