121 lines
3.9 KiB
Python
121 lines
3.9 KiB
Python
"""
|
||
Тесты моделей пользователей.
|
||
"""
|
||
import pytest
|
||
from django.contrib.auth import get_user_model
|
||
from django.db import IntegrityError
|
||
|
||
User = get_user_model()
|
||
|
||
|
||
@pytest.mark.django_db
|
||
class TestUserModel:
|
||
"""Тесты модели User."""
|
||
|
||
def test_create_user(self):
|
||
"""Тест создания обычного пользователя."""
|
||
user = User.objects.create_user(
|
||
email='test@example.com',
|
||
password='testpass123',
|
||
first_name='Тест',
|
||
last_name='Тестов',
|
||
phone='+79991234567',
|
||
role='mentor'
|
||
)
|
||
|
||
assert user.email == 'test@example.com'
|
||
assert user.first_name == 'Тест'
|
||
assert user.last_name == 'Тестов'
|
||
assert user.role == 'mentor'
|
||
assert user.is_active is True
|
||
assert user.is_staff is False
|
||
assert user.is_superuser is False
|
||
assert user.check_password('testpass123')
|
||
|
||
def test_create_superuser(self):
|
||
"""Тест создания суперпользователя."""
|
||
user = User.objects.create_superuser(
|
||
email='admin@example.com',
|
||
password='adminpass123',
|
||
first_name='Админ',
|
||
last_name='Админов'
|
||
)
|
||
|
||
assert user.is_active is True
|
||
assert user.is_staff is True
|
||
assert user.is_superuser is True
|
||
|
||
def test_user_email_unique(self):
|
||
"""Тест уникальности email."""
|
||
User.objects.create_user(
|
||
email='test@example.com',
|
||
password='testpass123',
|
||
first_name='Тест',
|
||
last_name='Тестов',
|
||
role='mentor'
|
||
)
|
||
|
||
with pytest.raises(IntegrityError):
|
||
User.objects.create_user(
|
||
email='test@example.com',
|
||
password='testpass456',
|
||
first_name='Тест2',
|
||
last_name='Тестов2',
|
||
role='client'
|
||
)
|
||
|
||
def test_user_str(self):
|
||
"""Тест строкового представления пользователя."""
|
||
user = User.objects.create_user(
|
||
email='test@example.com',
|
||
password='testpass123',
|
||
first_name='Иван',
|
||
last_name='Иванов',
|
||
role='mentor'
|
||
)
|
||
|
||
assert str(user) == 'Иван Иванов (test@example.com)'
|
||
|
||
def test_user_get_full_name(self):
|
||
"""Тест получения полного имени."""
|
||
user = User.objects.create_user(
|
||
email='test@example.com',
|
||
password='testpass123',
|
||
first_name='Петр',
|
||
last_name='Петров',
|
||
role='client'
|
||
)
|
||
|
||
assert user.get_full_name() == 'Петр Петров'
|
||
|
||
def test_user_roles(self):
|
||
"""Тест различных ролей пользователей."""
|
||
mentor = User.objects.create_user(
|
||
email='mentor@test.com',
|
||
password='pass123',
|
||
first_name='Ментор',
|
||
last_name='Менторов',
|
||
role='mentor'
|
||
)
|
||
|
||
client = User.objects.create_user(
|
||
email='client@test.com',
|
||
password='pass123',
|
||
first_name='Клиент',
|
||
last_name='Клиентов',
|
||
role='client'
|
||
)
|
||
|
||
parent = User.objects.create_user(
|
||
email='parent@test.com',
|
||
password='pass123',
|
||
first_name='Родитель',
|
||
last_name='Родителев',
|
||
role='parent'
|
||
)
|
||
|
||
assert mentor.role == 'mentor'
|
||
assert client.role == 'client'
|
||
assert parent.role == 'parent'
|
||
|