uchill/backend/apps/users/tests/test_models.py

121 lines
3.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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