"""
Test script to verify shots endpoints
"""
import requests
import json

BASE_URL = "http://localhost:8000"

# Test credentials
LOGIN_DATA = {
    "email": "admin@vfx.com",
    "password": "admin123"
}


def login():
    """Login and get access token"""
    response = requests.post(f"{BASE_URL}/auth/login", json=LOGIN_DATA)
    if response.status_code == 200:
        return response.json()["access_token"]
    else:
        print(f"Login failed: {response.status_code}")
        return None


def test_shots_endpoints():
    """Test shots endpoints"""
    print("=== Test: Shots Endpoints ===\n")
    
    token = login()
    if not token:
        return
    
    headers = {"Authorization": f"Bearer {token}"}
    
    # Test 1: List all shots
    print("1. Testing GET /shots")
    response = requests.get(f"{BASE_URL}/shots", headers=headers)
    print(f"   Status: {response.status_code}")
    if response.status_code == 200:
        shots = response.json()
        print(f"   Total shots: {len(shots)}")
        if shots:
            print(f"   First shot: {shots[0]['name']} (ID: {shots[0]['id']})")
    else:
        print(f"   Error: {response.json()}")
    
    # Test 2: List shots for episode 1
    print("\n2. Testing GET /shots?episode_id=1")
    response = requests.get(f"{BASE_URL}/shots?episode_id=1", headers=headers)
    print(f"   Status: {response.status_code}")
    if response.status_code == 200:
        shots = response.json()
        print(f"   Shots in episode 1: {len(shots)}")
        for shot in shots[:3]:
            print(f"     - {shot['name']} (ID: {shot['id']})")
    else:
        print(f"   Error: {response.json()}")
    
    # Test 3: Try the old endpoint (should fail)
    print("\n3. Testing GET /projects/1/shots?episode_id=1 (should fail)")
    response = requests.get(f"{BASE_URL}/projects/1/shots?episode_id=1", headers=headers)
    print(f"   Status: {response.status_code}")
    if response.status_code == 404:
        print(f"   ✓ Correctly returns 404 (endpoint doesn't exist)")
    else:
        print(f"   Response: {response.json()}")
    
    print("\n=== Test Completed ===")


if __name__ == "__main__":
    test_shots_endpoints()
