#!/usr/bin/env python3
"""
Test that the optimized asset router maintains schema compatibility.
"""

import requests
import json
from pydantic import ValidationError
from schemas.asset import AssetListResponse, AssetResponse

def test_schema_compatibility():
    BASE_URL = 'http://localhost:8000'
    
    # Login
    login_response = requests.post(f'{BASE_URL}/auth/login', json={'email': 'admin@vfx.com', 'password': 'admin123'})
    if login_response.status_code != 200:
        print("❌ Login failed")
        return
    
    token = login_response.json()['access_token']
    headers = {'Authorization': f'Bearer {token}'}
    
    print('Testing schema compatibility...')
    
    # Test list assets schema
    response = requests.get(f'{BASE_URL}/assets/?project_id=2', headers=headers)
    if response.status_code == 200:
        assets_data = response.json()
        
        try:
            # Validate each asset against AssetListResponse schema
            for asset_data in assets_data:
                asset = AssetListResponse.model_validate(asset_data)
                # If we get here, validation passed
            
            print(f'✅ List assets schema validation passed for {len(assets_data)} assets')
            
            # Test single asset schema if we have assets
            if assets_data:
                asset_id = assets_data[0]['id']
                response = requests.get(f'{BASE_URL}/assets/{asset_id}', headers=headers)
                
                if response.status_code == 200:
                    asset_data = response.json()
                    
                    try:
                        asset = AssetResponse.model_validate(asset_data)
                        print('✅ Single asset schema validation passed')
                    except ValidationError as e:
                        print(f'❌ Single asset schema validation failed: {e}')
                else:
                    print(f'❌ Failed to get single asset: {response.status_code}')
            
        except ValidationError as e:
            print(f'❌ List assets schema validation failed: {e}')
    else:
        print(f'❌ Failed to get assets: {response.status_code}')

if __name__ == "__main__":
    test_schema_compatibility()