Files
mostovik-backend/tests/apps/user/test_admin.py
Aleksandr Meshchriakov 3d298ce352
Some checks failed
CI/CD Pipeline / Run Tests (pull_request) Successful in 1m53s
CI/CD Pipeline / Telegram Notify Success (push) Has been cancelled
CI/CD Pipeline / Run Tests (push) Has been cancelled
CI/CD Pipeline / Code Quality Checks (push) Has been cancelled
CI/CD Pipeline / Code Quality Checks (pull_request) Failing after 2m54s
CI/CD Pipeline / Telegram Notify Success (pull_request) Has been skipped
feat: expand platform APIs, sources, and test coverage
2026-03-17 12:56:48 +01:00

96 lines
3.2 KiB
Python

"""Tests for user admin configuration."""
from __future__ import annotations
from apps.user.admin import ProfileAdmin, UserAdmin
from apps.user.models import Profile, User
from django.contrib.admin.sites import AdminSite
from django.contrib.messages.storage.fallback import FallbackStorage
from django.core.files.uploadedfile import SimpleUploadedFile
from django.test import RequestFactory, TestCase
from tests.utils.fixtures import fake
def _password() -> str:
return fake.password(length=12, special_chars=False)
class UserAdminTest(TestCase):
def setUp(self):
self.site = AdminSite()
self.admin = UserAdmin(User, self.site)
self.factory = RequestFactory()
def _request(self):
request = self.factory.get("/")
request.user = User.objects.create_superuser(
email=fake.email(),
username=fake.user_name(),
password=_password(),
)
request.session = {}
request._messages = FallbackStorage(request)
return request
def test_badges(self):
verified = User.objects.create_user(
email=fake.email(),
username=fake.user_name(),
password=_password(),
is_verified=True,
)
unverified = User.objects.create_user(
email=fake.email(),
username=fake.user_name(),
password=_password(),
is_verified=False,
)
self.assertIn("span", str(self.admin.is_verified_badge(verified)))
self.assertIn("span", str(self.admin.is_verified_badge(unverified)))
verified.is_active = True
unverified.is_active = False
self.assertIn("span", str(self.admin.is_active_badge(verified)))
self.assertIn("span", str(self.admin.is_active_badge(unverified)))
def test_actions(self):
users = [
User.objects.create_user(
email=fake.email(), username=fake.user_name(), password=_password()
)
for _ in range(2)
]
request = self._request()
qs = User.objects.filter(id__in=[u.id for u in users])
self.admin.verify_users(request, qs)
self.assertTrue(User.objects.filter(is_verified=True).count() >= 2)
self.admin.unverify_users(request, qs)
self.assertEqual(User.objects.filter(is_verified=True).count(), 0)
self.admin.deactivate_users(request, qs)
self.assertEqual(User.objects.filter(is_active=True).count(), 1) # admin user
self.admin.activate_users(request, qs)
self.assertTrue(User.objects.filter(is_active=True).count() >= 3)
class ProfileAdminTest(TestCase):
def setUp(self):
self.site = AdminSite()
self.admin = ProfileAdmin(Profile, self.site)
def test_has_avatar_badge(self):
user = User.objects.create_user(
email=fake.email(), username=fake.user_name(), password=_password()
)
profile = user.profile
self.assertIn("span", str(self.admin.has_avatar(profile)))
avatar = SimpleUploadedFile("avatar.png", b"img", content_type="image/png")
profile.avatar = avatar
profile.save(update_fields=["avatar"])
self.assertIn("span", str(self.admin.has_avatar(profile)))