#!/usr/bin/env python3
"""Quick smoke test for slack bot components."""

import os
import sys
sys.path.append(os.getcwd())

from dotenv import load_dotenv
load_dotenv()

print("🧪 Quick Smoke Test\n")

# Test 1: Import check
print("1. Testing imports...")
try:
    from slack_bot.llm.gemini import GeminiLLM
    from slack_bot.dispatcher import MessageDispatcher
    from slack_bot.context.storage import ContextStorage
    from slack_bot.tools.registry import TOOLS_SCHEMA, TOOL_FUNCTIONS
    print("   ✅ All imports successful\n")
except Exception as e:
    print(f"   ❌ Import failed: {e}\n")
    sys.exit(1)

# Test 2: Tool registry
print("2. Testing tool registry...")
print(f"   Available tools: {list(TOOL_FUNCTIONS.keys())}")
print(f"   Tool schemas: {len(TOOLS_SCHEMA)} defined")
assert len(TOOL_FUNCTIONS) > 0, "No tools registered"
print("   ✅ Tools registered correctly\n")

# Test 3: Context storage
print("3. Testing context storage...")
storage = ContextStorage("test_channel")
storage.add_message("user", "Hello")
storage.add_message("assistant", "Hi there!", model="gemini")
context = storage.get_context()
assert len(context) == 2, f"Expected 2 messages, got {len(context)}"
assert context[0]["role"] == "user"
assert context[1]["role"] == "assistant"
storage.clear()
print("   ✅ Context storage works\n")

# Test 4: Gemini initialization
print("4. Testing Gemini initialization...")
try:
    llm = GeminiLLM()
    print(f"   Model: {llm.get_model_name()}")
    print("   ✅ Gemini initialized successfully\n")
except Exception as e:
    print(f"   ❌ Gemini init failed: {e}\n")
    sys.exit(1)

# Test 5: Tool execution
print("5. Testing tool execution...")
from datetime import date
today = date.today().isoformat()

try:
    result = TOOL_FUNCTIONS["get_daily_summary"](target_date=today)
    print(f"   get_daily_summary result: {result[:100]}...")
    print("   ✅ Tool execution works\n")
except Exception as e:
    print(f"   ⚠️  Tool execution (expected if no data): {e}\n")

# Test 6: Dispatcher initialization
print("6. Testing dispatcher...")
try:
    dispatcher = MessageDispatcher()
    print("   ✅ Dispatcher initialized\n")
except Exception as e:
    print(f"   ❌ Dispatcher init failed: {e}\n")
    sys.exit(1)

print("="*60)
print("🎉 All smoke tests passed!")
print("="*60)
print("\nℹ️  To test with real Gemini API:")
print(f"   GEMINI_MODEL=gemini-2.5-pro python test_gemini_bot.py")
