76 lines
2.8 KiB
Python
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() |