#!/bin/bash
# Test all 6 MCP prompts
# Usage: ./test_prompts.sh [db_path]
# Default: uses test.duckdb (read-only tests)

source "$(dirname "$0")/test_lib.sh"

DB_PATH="${1:-$DEFAULT_TEST_DB}"

if [ ! -f "$DB_PATH" ]; then
    echo -e "${RED}Error: Database not found at $DB_PATH${NC}"
    exit 1
fi

echo "=== Testing MCP Prompts ==="
echo "Database: $DB_PATH"
echo ""

check_binary

# Test 1: List prompts
echo "Test 1: List prompts"
result=$(send_request "prompts/list" '{}' "$DB_PATH")
run_test "List prompts" "true" "$result"

# Verify 6 prompts returned
prompt_count=$(echo "$result" | jq -r '.result.prompts | length // 0')
if [ "$prompt_count" -eq 6 ]; then
    echo "  Found $prompt_count prompts"
fi

# Test 2: query_active_datasets prompt
echo ""
echo "Test 2: query_active_datasets prompt"
result=$(send_request "prompts/get" '{"name":"query_active_datasets"}' "$DB_PATH")
run_test "query_active_datasets" "true" "$result"

# Test 3: explore_database_schema prompt (overview)
echo ""
echo "Test 3: explore_database_schema prompt (overview)"
result=$(send_request "prompts/get" '{"name":"explore_database_schema","arguments":{"focus_area":"overview"}}' "$DB_PATH")
run_test "explore_database_schema (overview)" "true" "$result"

# Test 4: explore_database_schema prompt (dataset focus)
echo ""
echo "Test 4: explore_database_schema prompt (dataset focus)"
result=$(send_request "prompts/get" '{"name":"explore_database_schema","arguments":{"focus_area":"dataset"}}' "$DB_PATH")
run_test "explore_database_schema (dataset)" "true" "$result"

# Test 5: explore_location_hierarchy prompt
echo ""
echo "Test 5: explore_location_hierarchy prompt"
result=$(send_request "prompts/get" '{"name":"explore_location_hierarchy"}' "$DB_PATH")
run_test "explore_location_hierarchy" "true" "$result"

# Test 6: explore_location_hierarchy with dataset_id
echo ""
echo "Test 6: explore_location_hierarchy with dataset_id"
result=$(send_request "prompts/get" '{"name":"explore_location_hierarchy","arguments":{"dataset_id":"vgIr9JSH_lFj"}}' "$DB_PATH")
run_test "explore_location_hierarchy (with dataset_id)" "true" "$result"

# Test 7: query_location_data prompt
echo ""
echo "Test 7: query_location_data prompt"
result=$(send_request "prompts/get" '{"name":"query_location_data"}' "$DB_PATH")
run_test "query_location_data" "true" "$result"

# Test 8: analyze_cluster_files prompt
echo ""
echo "Test 8: analyze_cluster_files prompt"
result=$(send_request "prompts/get" '{"name":"analyze_cluster_files","arguments":{"cluster_id":"test123"}}' "$DB_PATH")
run_test "analyze_cluster_files" "true" "$result"

# Test 9: system_status_check prompt
echo ""
echo "Test 9: system_status_check prompt"
result=$(send_request "prompts/get" '{"name":"system_status_check"}' "$DB_PATH")
run_test "system_status_check" "true" "$result"

# Test 10: Invalid prompt name
echo ""
echo "Test 10: Invalid prompt name"
result=$(send_request "prompts/get" '{"name":"nonexistent_prompt"}' "$DB_PATH")
if is_error "$result" || echo "$result" | jq -e '.error' >/dev/null 2>&1; then
    echo -e "${GREEN}${NC} Invalid prompt name handled correctly"
    ((TESTS_RUN++))
    ((TESTS_PASSED++))
else
    echo -e "${RED}${NC} Invalid prompt name should return error"
    ((TESTS_RUN++))
    ((TESTS_FAILED++))
fi

echo ""
print_summary