feat: обновления парсеров, тестов и миграций
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>
This commit is contained in:
2026-02-10 10:17:47 +01:00
parent 975d019ba5
commit ee95628a0a
59 changed files with 7292 additions and 2876 deletions

View File

@@ -0,0 +1,85 @@
"""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)))