mirror of
https://github.com/seanmorley15/AdventureLog.git
synced 2025-07-21 13:59:36 +02:00
refactor: change visit ordering to use latest visit date; remove unused signup form
This commit is contained in:
parent
5cce76274a
commit
2c1b540c20
3 changed files with 87 additions and 23 deletions
|
@ -20,7 +20,7 @@ from django.contrib.auth import get_user_model
|
|||
from icalendar import Calendar, Event, vText, vCalAddress
|
||||
from django.http import HttpResponse
|
||||
from datetime import datetime
|
||||
from django.db.models import Min
|
||||
from django.db.models import Max
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
|
@ -54,9 +54,9 @@ class AdventureViewSet(viewsets.ModelViewSet):
|
|||
|
||||
if order_by == 'date':
|
||||
# order by the earliest visit object associated with the adventure
|
||||
queryset = queryset.annotate(earliest_visit=Min('visits__start_date'))
|
||||
queryset = queryset.filter(earliest_visit__isnull=False)
|
||||
ordering = 'earliest_visit'
|
||||
queryset = queryset.annotate(latest_visit=Max('visits__start_date'))
|
||||
queryset = queryset.filter(latest_visit__isnull=False)
|
||||
ordering = 'latest_visit'
|
||||
# Apply case-insensitive sorting for the 'name' field
|
||||
elif order_by == 'name':
|
||||
queryset = queryset.annotate(lower_name=Lower('name'))
|
||||
|
|
|
@ -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
|
|
@ -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')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue