Some checks failed
CI/CD Pipeline / Run Tests (push) Failing after 37s
CI/CD Pipeline / Code Quality Checks (push) Failing after 43s
CI/CD Pipeline / Build & Push Images (push) Has been skipped
CI/CD Pipeline / Deploy (dev) (push) Has been skipped
CI/CD Pipeline / Deploy (prod) (push) Has been skipped
CI/CD Pipeline / Code Quality Checks (pull_request) Failing after 0s
CI/CD Pipeline / Run Tests (pull_request) Failing after 0s
CI/CD Pipeline / Build & Push Images (pull_request) Has been skipped
CI/CD Pipeline / Deploy (dev) (pull_request) Has been skipped
CI/CD Pipeline / Deploy (prod) (pull_request) Has been skipped
- Обновлены клиенты парсеров (checko, fns, minpromtorg, proverki, zakupki) - Добавлены новые миграции для моделей - Расширено покрытие тестами - Обновлены конфигурации и настройки проекта - Добавлены утилиты для тестирования Co-Authored-By: Warp <agent@warp.dev>
86 lines
3.0 KiB
Python
86 lines
3.0 KiB
Python
"""Tests for user admin configuration."""
|
|
|
|
from __future__ import annotations
|
|
|
|
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 apps.user.admin import ProfileAdmin, UserAdmin
|
|
from apps.user.models import Profile, User
|
|
from tests.utils.fixtures import fake
|
|
|
|
|
|
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="pass",
|
|
)
|
|
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="pass", is_verified=True
|
|
)
|
|
unverified = User.objects.create_user(
|
|
email=fake.email(), username=fake.user_name(), password="pass", 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="pass"
|
|
)
|
|
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="pass"
|
|
)
|
|
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)))
|