#!/bin/bash

# 测试脚本运行器
# 提供快速运行不同类型测试的方法

echo "Yuxi API 测试运行器"
echo "========================"

# 检查测试服务是否运行
check_server() {
    echo "检查测试服务器状态..."
    curl -s http://localhost:5050/api/system/health > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        echo "✓ 测试服务器运行正常"
        return 0
    else
        echo "✗ 警告: 测试服务器未运行或无法访问"
        echo "  请确保服务器在 http://localhost:5050 运行"
        return 1
    fi
}

# 运行所有测试
run_all_tests() {
    echo "运行所有API测试..."
    uv run pytest test/api/ -v
}

# 运行认证测试
run_auth_tests() {
    echo "运行认证API测试..."
    uv run pytest test/api/test_auth_api.py -v
}

# 运行系统测试
run_system_tests() {
    echo "运行系统API测试..."
    uv run pytest test/api/test_system_api.py -v
}

# 运行对话测试
run_chat_tests() {
    echo "运行对话API测试..."
    uv run pytest test/api/test_chat_api.py -v
}

# 运行快速测试（只测试基础功能）
run_quick_tests() {
    echo "运行快速测试（基础功能）..."
    uv run pytest test/api/ -v -m "not slow"
}

# 显示帮助
show_help() {
    echo "用法: $0 [选项]"
    echo ""
    echo "选项:"
    echo "  all     - 运行所有测试"
    echo "  auth    - 运行认证测试"
    echo "  system  - 运行系统测试"
    echo "  chat    - 运行对话测试"
    echo "  quick   - 运行快速测试（排除慢速测试）"
    echo "  check   - 检查服务器状态"
    echo "  help    - 显示此帮助"
    echo ""
    echo "示例:"
    echo "  $0 all       # 运行所有测试"
    echo "  $0 quick     # 快速测试"
    echo "  $0 check     # 检查服务器"
}

# 主逻辑
case "${1:-all}" in
    "all")
        check_server
        run_all_tests
        ;;
    "auth")
        check_server
        run_auth_tests
        ;;
    "system")
        check_server
        run_system_tests
        ;;
    "chat")
        check_server
        run_chat_tests
        ;;
    "quick")
        check_server
        run_quick_tests
        ;;
    "check")
        check_server
        ;;
    "help"|"-h"|"--help")
        show_help
        ;;
    *)
        echo "未知选项: $1"
        show_help
        exit 1
        ;;
esac