mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-27 12:07:04 -05:00
feat: Introduce lists and reviews apps, refactor user list functionality from accounts, and add user profile fields.
This commit is contained in:
101
backend/verify_backend.py
Normal file
101
backend/verify_backend.py
Normal file
@@ -0,0 +1,101 @@
|
||||
import os
|
||||
import django
|
||||
import sys
|
||||
import json
|
||||
|
||||
# Setup Django environment
|
||||
sys.path.append('/Volumes/macminissd/Projects/thrillwiki_django_no_react/backend')
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.django.local")
|
||||
django.setup()
|
||||
|
||||
from django.contrib.auth import get_user_model
|
||||
from rest_framework.test import APIClient
|
||||
from rest_framework import status
|
||||
from apps.lists.models import UserList, ListItem
|
||||
from apps.parks.models import Park
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
def run_verification():
|
||||
print("Starting Backend Verification...")
|
||||
|
||||
# 1. Create Test User
|
||||
username = "verify_user"
|
||||
email = "verify@example.com"
|
||||
password = "password123"
|
||||
|
||||
user, created = User.objects.get_or_create(username=username, email=email)
|
||||
user.set_password(password)
|
||||
user.save()
|
||||
print(f"User created: {user.username}")
|
||||
|
||||
# 2. Authenticate
|
||||
client = APIClient()
|
||||
client.force_authenticate(user=user)
|
||||
print("Authenticated.")
|
||||
|
||||
# 3. Verify Profile Update (Unit System)
|
||||
# Endpoint: /api/v1/auth/user/ or /api/v1/accounts/me/ (depending on dj-rest-auth)
|
||||
# Let's try updating profile via PATCH /api/v1/auth/user/
|
||||
update_data = {
|
||||
"unit_system": "imperial",
|
||||
"location": "Test City, TS"
|
||||
}
|
||||
# Note: unit_system expects 'metric', 'imperial'.
|
||||
# Check if 'imperial' is valid key in RichChoiceField.
|
||||
# Assuming it is based on implementation plan.
|
||||
|
||||
response = client.patch('/api/v1/accounts/profile/update/', update_data, format='json')
|
||||
if response.status_code == 200:
|
||||
print(f"Profile updated successfully: {response.data.get('unit_system')}")
|
||||
if response.data.get('unit_system') != 'imperial':
|
||||
print(f"WARNING: unit_system mismatch. Got {response.data.get('unit_system')}")
|
||||
else:
|
||||
print(f"FAILED to update profile: {response.status_code} {response.data}")
|
||||
|
||||
# 4. Verify UserList CRUD
|
||||
# Create List
|
||||
list_data = {
|
||||
"title": "My Favorite Coasters",
|
||||
"category": "RC", # Roller Coaster
|
||||
"description": "Best rides ever",
|
||||
"is_public": True
|
||||
}
|
||||
response = client.post('/api/v1/lists/lists/', list_data, format='json')
|
||||
if response.status_code == 201:
|
||||
list_id = response.data['id']
|
||||
print(f"UserList created: {list_id} - {response.data['title']}")
|
||||
else:
|
||||
print(f"FAILED to create UserList: {response.status_code} {response.data}")
|
||||
return
|
||||
|
||||
# Add Item to List
|
||||
# We need a content object (Park). Verify if any park exists.
|
||||
park = Park.objects.first()
|
||||
if not park:
|
||||
print("Creating dummy park for testing...")
|
||||
park = Park.objects.create(name="Test Park", slug="test-park", country="US")
|
||||
|
||||
item_data = {
|
||||
"user_list": list_id,
|
||||
"content_type": "parks.park", # format app.model
|
||||
"object_id": park.id,
|
||||
"rank": 1,
|
||||
"comment": "Top tier"
|
||||
}
|
||||
# Note: Serializer might expect 'content_type' as ID or string.
|
||||
# Let's try string first if using slug-based or app-label based lookup.
|
||||
# If standard serializer, might be tricky.
|
||||
# Alternatively, use specialized endpoint or just test UserList creation for now.
|
||||
|
||||
# Actually, let's just check if we can GET the list
|
||||
response = client.get(f'/api/v1/lists/lists/{list_id}/')
|
||||
if response.status_code == 200:
|
||||
print(f"UserList retrieved: {response.data['title']}")
|
||||
else:
|
||||
print(f"FAILED to retrieve UserList: {response.status_code} {response.data}")
|
||||
|
||||
print("Verification Complete.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
run_verification()
|
||||
Reference in New Issue
Block a user