LinkDesk/backend/test_task_statuses.py

101 lines
3.4 KiB
Python

"""
Test script for task status endpoints
"""
import requests
import json
BASE_URL = "http://localhost:8000"
def test_get_all_task_statuses():
"""Test getting all task statuses for a project"""
# First, login to get a token
login_response = requests.post(
f"{BASE_URL}/auth/login",
json={
"email": "admin@vfx.com",
"password": "admin123"
}
)
if login_response.status_code != 200:
print(f"❌ Login failed: {login_response.status_code}")
print(login_response.text)
return
token = login_response.json()["access_token"]
headers = {"Authorization": f"Bearer {token}"}
print("✅ Login successful")
# Get list of projects
projects_response = requests.get(
f"{BASE_URL}/projects/",
headers=headers
)
if projects_response.status_code != 200:
print(f"❌ Failed to get projects: {projects_response.status_code}")
print(projects_response.text)
return
projects = projects_response.json()
if not projects:
print("❌ No projects found")
return
project_id = projects[0]["id"]
print(f"✅ Using project ID: {project_id}")
# Test GET /projects/{project_id}/task-statuses
print("\n--- Testing GET /projects/{project_id}/task-statuses ---")
response = requests.get(
f"{BASE_URL}/projects/{project_id}/task-statuses",
headers=headers
)
print(f"Status Code: {response.status_code}")
if response.status_code == 200:
data = response.json()
print("✅ Successfully retrieved task statuses")
print(f"\nResponse:")
print(json.dumps(data, indent=2))
# Validate response structure
assert "statuses" in data, "Missing 'statuses' field"
assert "system_statuses" in data, "Missing 'system_statuses' field"
assert "default_status_id" in data, "Missing 'default_status_id' field"
print(f"\n✅ System statuses count: {len(data['system_statuses'])}")
print(f"✅ Custom statuses count: {len(data['statuses'])}")
print(f"✅ Default status ID: {data['default_status_id']}")
# Verify system statuses
expected_system_statuses = ["not_started", "in_progress", "submitted", "approved", "retake"]
system_status_ids = [s["id"] for s in data["system_statuses"]]
for expected_id in expected_system_statuses:
if expected_id in system_status_ids:
print(f"✅ System status '{expected_id}' found")
else:
print(f"❌ System status '{expected_id}' missing")
# Verify all system statuses have required fields
for status in data["system_statuses"]:
assert "id" in status, f"System status missing 'id': {status}"
assert "name" in status, f"System status missing 'name': {status}"
assert "color" in status, f"System status missing 'color': {status}"
assert "is_system" in status, f"System status missing 'is_system': {status}"
assert status["is_system"] == True, f"System status 'is_system' should be True: {status}"
print("\n✅ All system statuses have required fields")
else:
print(f"❌ Failed to get task statuses")
print(response.text)
if __name__ == "__main__":
test_get_all_task_statuses()