1
0
Fork 0
mirror of https://github.com/seanmorley15/AdventureLog.git synced 2025-07-21 22:09:36 +02:00

refactor: change visit ordering to use latest visit date; remove unused signup form

This commit is contained in:
Sean Morley 2025-01-14 20:46:33 -05:00
parent 5cce76274a
commit 2c1b540c20
3 changed files with 87 additions and 23 deletions

View file

@ -20,7 +20,7 @@ from django.contrib.auth import get_user_model
from icalendar import Calendar, Event, vText, vCalAddress from icalendar import Calendar, Event, vText, vCalAddress
from django.http import HttpResponse from django.http import HttpResponse
from datetime import datetime from datetime import datetime
from django.db.models import Min from django.db.models import Max
User = get_user_model() User = get_user_model()
@ -54,9 +54,9 @@ class AdventureViewSet(viewsets.ModelViewSet):
if order_by == 'date': if order_by == 'date':
# order by the earliest visit object associated with the adventure # order by the earliest visit object associated with the adventure
queryset = queryset.annotate(earliest_visit=Min('visits__start_date')) queryset = queryset.annotate(latest_visit=Max('visits__start_date'))
queryset = queryset.filter(earliest_visit__isnull=False) queryset = queryset.filter(latest_visit__isnull=False)
ordering = 'earliest_visit' ordering = 'latest_visit'
# Apply case-insensitive sorting for the 'name' field # Apply case-insensitive sorting for the 'name' field
elif order_by == 'name': elif order_by == 'name':
queryset = queryset.annotate(lower_name=Lower('name')) queryset = queryset.annotate(lower_name=Lower('name'))

View file

@ -1,17 +0,0 @@
from django import forms
class CustomSignupForm(forms.Form):
first_name = forms.CharField(max_length=30, required=True)
last_name = forms.CharField(max_length=30, required=True)
def signup(self, request, user):
# Delay the import to avoid circular import
from allauth.account.forms import SignupForm
# No need to call super() from CustomSignupForm; use the SignupForm directly if needed
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
# Save the user instance
user.save()
return user

View file

@ -1,3 +1,84 @@
from django.test import TestCase from rest_framework.test import APITestCase
from .models import CustomUser
from uuid import UUID
# Create your tests here. from allauth.account.models import EmailAddress
class UserAPITestCase(APITestCase):
def setUp(self):
# Signup a new user
response = self.client.post('/_allauth/browser/v1/auth/signup', {
'username': 'testuser',
'email': 'testuser@example.com',
'password': 'testpassword',
'first_name': 'Test',
'last_name': 'User',
}, format='json')
self.assertEqual(response.status_code, 200)
def test_001_user(self):
# Fetch user metadata
response = self.client.get('/auth/user-metadata/', format='json')
self.assertEqual(response.status_code, 200)
data = response.json()
print(data)
self.assertEqual(data['username'], 'testuser')
self.assertEqual(data['email'], 'testuser@example.com')
self.assertEqual(data['first_name'], 'Test')
self.assertEqual(data['last_name'], 'User')
self.assertEqual(data['public_profile'], False)
self.assertEqual(data['profile_pic'], None)
self.assertEqual(UUID(data['uuid']), CustomUser.objects.get(username='testuser').uuid)
self.assertEqual(data['is_staff'], False)
self.assertEqual(data['has_password'], True)
def test_002_user_update(self):
try:
userModel = CustomUser.objects.get(username='testuser2')
except:
userModel = None
self.assertEqual(userModel, None)
# Update user metadata
response = self.client.patch('/auth/update-user/', {
'username': 'testuser2',
'first_name': 'Test2',
'last_name': 'User2',
'public_profile': True,
}, format='json')
self.assertEqual(response.status_code, 200)
data = response.json()
# Note that the email field is not updated because that is a seperate endpoint
userModel = CustomUser.objects.get(username='testuser2')
print(userModel)
self.assertEqual(data['username'], 'testuser2')
self.assertEqual(data['email'], 'testuser@example.com')
self.assertEqual(data['first_name'], 'Test2')
self.assertEqual(data['last_name'], 'User2')
self.assertEqual(data['public_profile'], True)
self.assertEqual(data['profile_pic'], None)
self.assertEqual(UUID(data['uuid']), CustomUser.objects.get(username='testuser2').uuid)
self.assertEqual(data['is_staff'], False)
self.assertEqual(data['has_password'], True)
def test_003_user_add_email(self):
# Update user email
response = self.client.post('/_allauth/browser/v1/account/email', {
'email': 'testuser2@example.com',
}, format='json')
self.assertEqual(response.status_code, 200)
data = response.json()
email_data = data['data'][0]
self.assertEqual(email_data['email'], 'testuser2@example.com')
self.assertEqual(email_data['primary'], False)
self.assertEqual(email_data['verified'], False)
emails = EmailAddress.objects.filter(user=CustomUser.objects.get(username='testuser'))
self.assertEqual(emails.count(), 2)
# assert email are testuser@example and testuser2@example.com
self.assertEqual(emails[1].email, 'testuser@example.com')
self.assertEqual(emails[0].email, 'testuser2@example.com')