#!/bin/bash

# Test script for Flappy Dodo Audio Upload API
# Deploy URL: https://suno-ai--flappy-dodo-audio-upload-api.modal.run

BASE_URL="https://suno-ai--flappy-dodo-audio-upload-api.modal.run"
AUDIO_FILE="${1:-./test.wav}"

echo "=========================================="
echo "Testing Flappy Dodo Audio Upload API"
echo "=========================================="
echo "Base URL: $BASE_URL"
echo "Audio File: $AUDIO_FILE"
echo ""

# Check if audio file exists
if [ ! -f "$AUDIO_FILE" ]; then
    echo "❌ Error: Audio file not found: $AUDIO_FILE"
    echo "Usage: $0 [path/to/audio.wav]"
    exit 1
fi

echo "✓ Audio file found: $AUDIO_FILE"
echo ""

# Test 1: Health check
echo "=========================================="
echo "Test 1: Health Check"
echo "=========================================="
echo "GET $BASE_URL/"
echo ""
HEALTH_RESPONSE=$(curl -s "$BASE_URL/")
echo "$HEALTH_RESPONSE"
if echo "$HEALTH_RESPONSE" | grep -q "ok"; then
    echo "✓ Health check passed"
else
    echo "❌ Health check failed"
fi
echo ""
echo ""

# Test 2: Upload and generate cover with single style
echo "=========================================="
echo "Test 2: Upload and Generate Cover (Single Style)"
echo "=========================================="
echo "POST $BASE_URL/upload-and-cover"
echo "  file: $AUDIO_FILE"
echo "  styles: marimba"
echo ""
echo "This will take 30-60 seconds (uploading + processing + generating cover)..."
echo ""

RESPONSE=$(curl -s -X POST "$BASE_URL/upload-and-cover" \
  -F "file=@$AUDIO_FILE" \
  -F "styles=marimba")

echo "$RESPONSE" | jq . 2>/dev/null || echo "$RESPONSE"
echo ""

# Check if successful
if echo "$RESPONSE" | jq -e '.success == true' > /dev/null 2>&1; then
    echo "✓ Upload and cover generation succeeded!"
    
    # Extract some key info
    UPLOAD_ID=$(echo "$RESPONSE" | jq -r '.upload_id' 2>/dev/null)
    ORIGINAL_CLIP_ID=$(echo "$RESPONSE" | jq -r '.original_clip.id' 2>/dev/null)
    ORIGINAL_AUDIO=$(echo "$RESPONSE" | jq -r '.original_clip.audio_url' 2>/dev/null)
    COVER_COUNT=$(echo "$RESPONSE" | jq -r '.cover_clips | length' 2>/dev/null)
    
    echo ""
    echo "Summary:"
    echo "  Upload ID: $UPLOAD_ID"
    echo "  Original Clip ID: $ORIGINAL_CLIP_ID"
    echo "  Original Audio: $ORIGINAL_AUDIO"
    echo "  Cover Clips Generated: $COVER_COUNT"
    echo ""
    
    # Show cover audio URLs
    echo "Cover Audio URLs:"
    echo "$RESPONSE" | jq -r '.cover_clips[].audio_url' 2>/dev/null | while read -r url; do
        echo "  - $url"
    done
else
    echo "❌ Upload and cover generation failed"
    echo "Error details:"
    echo "$RESPONSE" | jq -r '.error // .detail // "Unknown error"' 2>/dev/null || echo "$RESPONSE"
fi

echo ""
echo ""

# Test 3: Upload and generate covers with multiple styles (optional, commented out by default)
echo "=========================================="
echo "Test 3: Multiple Styles (Optional)"
echo "=========================================="
echo "To test with multiple styles, run:"
echo ""
echo "curl -X POST $BASE_URL/upload-and-cover \\"
echo "  -F 'file=@$AUDIO_FILE' \\"
echo "  -F 'styles=marimba,jazz,rock'"
echo ""
echo "Note: This will take longer as it generates covers for each style."
echo ""

echo "=========================================="
echo "Tests Complete!"
echo "=========================================="

