""" Тесты моделей пользователей. """ 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'