LinkDesk/backend/test_asset_custom_status.py

76 lines
2.8 KiB
Python

#!/usr/bin/env python3
"""
Test custom task status support in the optimized asset router.
"""
import requests
import json
def test_custom_status_support():
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}'}
# Get projects to find one with custom task types
projects_response = requests.get(f'{BASE_URL}/projects/', headers=headers)
if projects_response.status_code != 200:
print("❌ Failed to get projects")
return
projects = projects_response.json()
project_id = projects[0]['id'] if projects else 2
print(f'Testing custom status support with project {project_id}...')
# Test list assets with custom task types
response = requests.get(f'{BASE_URL}/assets/?project_id={project_id}', headers=headers)
print(f'List assets status: {response.status_code}')
if response.status_code == 200:
assets = response.json()
print(f'Assets returned: {len(assets)}')
if assets:
asset = assets[0]
task_status = asset.get('task_status', {})
task_details = asset.get('task_details', [])
print(f'Task status keys: {list(task_status.keys())}')
print(f'Task details count: {len(task_details)}')
# Check if custom task types are included
standard_types = ['modeling', 'surfacing', 'rigging']
all_types = list(task_status.keys())
custom_types = [t for t in all_types if t not in standard_types]
if custom_types:
print(f'Custom task types found: {custom_types}')
else:
print('No custom task types (using standard types only)')
# Verify all task details have the required fields
if task_details:
sample_task = task_details[0]
required_fields = ['task_type', 'status', 'task_id', 'assigned_user_id']
missing_fields = [f for f in required_fields if f not in sample_task]
if missing_fields:
print(f'❌ Missing fields in task details: {missing_fields}')
else:
print('✅ Task details have all required fields')
print('✅ Custom status support test passed!')
else:
print('No assets found for testing')
else:
print(f'❌ List assets failed: {response.status_code}')
if __name__ == "__main__":
test_custom_status_support()