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

@@ -5,6 +5,8 @@ from apps.core.services import (
BulkOperationsMixin,
QueryOptimizerMixin,
)
from django.contrib.auth import get_user_model
from django.db.models import OuterRef
from django.test import TestCase
from faker import Faker
@@ -65,6 +67,41 @@ class QueryOptimizerMixinTest(TestCase):
self.assertEqual(QueryOptimizerMixin.default_only, [])
self.assertEqual(QueryOptimizerMixin.default_defer, [])
def test_optimizer_methods_execute(self):
User = get_user_model()
class UserService(QueryOptimizerMixin):
model = User
prefetch_related = ["groups"]
default_only = ["id", "email"]
default_defer = ["password"]
qs = UserService.get_optimized_queryset()
self.assertIsNotNone(qs)
qs_no_opts = UserService.apply_optimizations(
User.objects.all(),
include_select=False,
include_prefetch=False,
include_only=False,
include_defer=False,
)
self.assertIsNotNone(qs_no_opts)
qs_list = UserService.get_list_queryset()
qs_detail = UserService.get_detail_queryset()
self.assertIsNotNone(qs_list)
self.assertIsNotNone(qs_detail)
qs_counts = UserService.with_counts(User.objects.all(), "groups")
self.assertIsNotNone(qs_counts)
qs_exists = UserService.with_exists(
User.objects.all(),
has_self=User.objects.filter(pk=OuterRef("pk")),
)
self.assertIsNotNone(qs_exists)
class BulkOperationsIntegrationTest(TestCase):
"""Интеграционные тесты для bulk операций с BackgroundJob."""