Todo_App / tests /test_new_fields.py
Abdullahcoder54's picture
Push the app
697c967
"""
Test script to verify the new Task model fields work correctly
"""
import requests
import json
from datetime import datetime
BASE_URL = "http://localhost:8001"
def test_new_task_fields():
print("Testing new Task model fields (priority, due_date)...")
# Register a test user
timestamp = str(int(datetime.now().timestamp()))
user_data = {
"email": f"testuser_{timestamp}@example.com",
"password": "securepassword123",
"name": f"Test User {timestamp}"
}
response = requests.post(f"{BASE_URL}/api/auth/register",
json=user_data,
headers={"Content-Type": "application/json"})
if response.status_code != 201:
print(f"Failed to register user: {response.status_code}")
return False
result = response.json()
token = result['token']
user_id = result['user']['id']
print(f"User registered: {user_id}")
# Create a task with new fields
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
task_data = {
"title": "Test Task with Priority",
"description": "This is a test task with priority and due date",
"completed": False,
"priority": "high",
"due_date": "2025-12-31T23:59:59"
}
response = requests.post(f"{BASE_URL}/api/{user_id}/tasks",
json=task_data,
headers=headers)
if response.status_code != 201:
print(f"Failed to create task with new fields: {response.status_code} - {response.text}")
return False
task_result = response.json()
print(f"Task created with new fields: {task_result}")
# Verify the response contains the new fields
if 'priority' in task_result and 'due_date' in task_result:
print("✅ New fields (priority, due_date) are present in response")
else:
print("❌ New fields are missing from response")
return False
# Get the task back to verify it was stored correctly
response = requests.get(f"{BASE_URL}/api/{user_id}/tasks/{task_result['id']}", headers=headers)
if response.status_code != 200:
print(f"Failed to retrieve task: {response.status_code}")
return False
retrieved_task = response.json()
print(f"Retrieved task: {retrieved_task}")
# Verify the new fields are preserved
if (retrieved_task.get('priority') == 'high' and
'due_date' in retrieved_task and
retrieved_task.get('title') == 'Test Task with Priority'):
print("✅ New fields are correctly stored and retrieved")
else:
print("❌ New fields are not correctly stored or retrieved")
return False
# Test updating the task with new fields
update_data = {
"priority": "low",
"due_date": "2026-01-15T10:30:00"
}
response = requests.put(f"{BASE_URL}/api/{user_id}/tasks/{task_result['id']}",
json=update_data,
headers=headers)
if response.status_code != 200:
print(f"Failed to update task with new fields: {response.status_code}")
return False
updated_task = response.json()
print(f"Updated task: {updated_task}")
if updated_task.get('priority') == 'low':
print("✅ Task update with new fields works correctly")
else:
print("❌ Task update with new fields failed")
return False
print("\n🎉 All tests passed! New Task fields are working correctly!")
return True
if __name__ == "__main__":
test_new_task_fields()