Dynavera/apps/users/tests.py
2025-11-19 12:55:15 +00:00

56 lines
1.6 KiB
Python

from django.test import TestCase
from django.contrib.auth import get_user_model
from django.urls import reverse
from rest_framework.test import APIClient
from rest_framework import status
User = get_user_model()
class UserModelTests(TestCase):
def setUp(self):
self.user_data = {
'email_address': 'Test@Example.com',
'username': 'TestUser',
'first_name': 'Test',
'last_name': 'User',
'date_of_birth': '1990-01-01',
}
def test_create_user_and_properties(self):
user = User.objects.create_user(password='pass1234', **self.user_data)
self.assertIsNotNone(user.pk)
# email should be normalized by the manager
self.assertEqual(user.email_address.lower(), 'test@example.com')
# username should be saved lowercase by model.save()
self.assertEqual(user.username, 'testuser')
# full_name property
self.assertEqual(user.full_name, 'Test User')
def test_create_superuser(self):
su = User.objects.create_superuser(password='adminpass', **self.user_data)
self.assertTrue(su.is_staff)
self.assertTrue(su.pk)
class UserAPITests(TestCase):
def setUp(self):
self.client = APIClient()
self.user = User.objects.create_user(
password='pass1234',
email_address='apiuser@example.com',
username='apiuser',
first_name='API',
last_name='User',
date_of_birth='1995-05-05',
)
def test_list_users(self):
url = '/api/users/'
resp = self.client.get(url)
self.assertEqual(resp.status_code, status.HTTP_200_OK)
# Should contain at least the created user
usernames = [u.get('username') for u in resp.json()]
self.assertIn(self.user.username, usernames)