#!/usr/bin/env python
"""
Test Query to Report Script

This script tests the query_to_report.py script with a sample query.
"""

import os
import sys
import asyncio
import argparse
from datetime import datetime

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

from scripts.query_to_report import query_to_report


async def run_test(use_mock: bool = False):
    """
    Run a test of the query to report workflow.
    
    Args:
        use_mock: If True, use mock data instead of making actual API calls
    """
    # Sample query
    query = "What are the latest advancements in quantum computing?"
    
    # Generate timestamp for unique output file
    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    output_file = f"report_{timestamp}.md"
    
    # Run the workflow
    await query_to_report(
        query=query,
        output_file=output_file,
        num_results=5,  # Limit to 5 results per engine for faster testing
        use_mock=use_mock
    )
    
    print(f"\nTest completed successfully!")
    print(f"Report saved to: {output_file}")
    
    # Print the first few lines of the report
    try:
        with open(output_file, 'r', encoding='utf-8') as f:
            preview = f.read(500)
        print("\nReport Preview:")
        print("-" * 80)
        print(preview + "...")
        print("-" * 80)
    except Exception as e:
        print(f"Error reading report: {e}")


def main():
    """Main function to parse arguments and run the test."""
    parser = argparse.ArgumentParser(description='Test the query to report workflow')
    parser.add_argument('--use-mock', '-m', action='store_true', help='Use mock data instead of API calls')
    
    args = parser.parse_args()
    
    # Run the test
    asyncio.run(run_test(use_mock=args.use_mock))


if __name__ == "__main__":
    main()
