#!/usr/bin/env python
"""
Test script to check if search functionality is working
"""

import os
import sys
import json
import asyncio
from pathlib import Path

# Add parent directory to path
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

from execution.search_executor import SearchExecutor
from query.query_processor import QueryProcessor

async def test_search():
    """Test search functionality"""
    query = "Research and explain in detail the potential effects of creatine supplementation on muscle mass and strength"
    
    # Initialize components
    query_processor = QueryProcessor()
    search_executor = SearchExecutor()
    
    # Print available search engines
    available_engines = search_executor.get_available_search_engines()
    print(f"Available search engines: {available_engines}")
    
    # Process the query
    structured_query = query_processor.process_query(query)
    print(f"Structured query: {json.dumps(structured_query, indent=2)}")
    
    # Generate search queries for different engines
    structured_query = query_processor.generate_search_queries(
        structured_query, 
        search_executor.get_available_search_engines()
    )
    print(f"Search queries: {json.dumps(structured_query.get('search_queries', {}), indent=2)}")
    
    # Execute search
    search_results = search_executor.execute_search(
        structured_query,
        num_results=5
    )
    
    # Print results
    for engine, results in search_results.items():
        print(f"\nResults from {engine}: {len(results)}")
        for i, result in enumerate(results[:3]):  # Show first 3 results
            print(f"  {i+1}. {result.get('title')} - {result.get('url')}")
    
    # Return total number of results
    total_results = sum(len(results) for results in search_results.values())
    return total_results

if __name__ == "__main__":
    total_results = asyncio.run(test_search())
    print(f"\nTotal results: {total_results}")
