feat: expand platform APIs, sources, and test coverage
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

This commit is contained in:
2026-03-17 12:56:48 +01:00
parent b505c67968
commit 3d298ce352
101 changed files with 8387 additions and 292 deletions

View File

@@ -126,12 +126,12 @@ class ProcurementServiceSaveTestCase(TestCase):
record = ProcurementRecord.objects.get(purchase_number=purchase_number)
self.assertEqual(record.registry_organization_id, organization.id)
def test_save_ignores_duplicates(self):
"""Дубликаты по purchase_number пропускаются."""
def test_save_updates_duplicates(self):
"""Повторная синхронизация обновляет существующую закупку."""
# Создаём существующую запись
purchase_number = _digits(19)
ProcurementRecordFactory(purchase_number=purchase_number)
initial_count = ProcurementRecord.objects.count()
original = ProcurementRecord.objects.get(purchase_number=purchase_number)
# Пытаемся сохранить с тем же номером
procurement = _build_procurement(
@@ -139,13 +139,15 @@ class ProcurementServiceSaveTestCase(TestCase):
customer_inn=_digits(10),
)
ProcurementService.save_procurements([procurement], batch_id=2)
saved = ProcurementService.save_procurements([procurement], batch_id=2)
# Дубликат пропущен - количество записей не изменилось
self.assertEqual(ProcurementRecord.objects.count(), initial_count)
# Оригинальная запись не была перезаписана
original = ProcurementRecord.objects.get(purchase_number=purchase_number)
self.assertNotEqual(original.customer_inn, procurement.customer_inn)
# Существующая запись обновляется в пределах той же строки
self.assertEqual(saved, 1)
self.assertEqual(ProcurementRecord.objects.count(), 1)
refreshed = ProcurementRecord.objects.get(purchase_number=purchase_number)
self.assertEqual(refreshed.customer_inn, procurement.customer_inn)
self.assertEqual(refreshed.load_batch, 2)
self.assertEqual(refreshed.id, original.id)
def test_save_with_chunking(self):
"""Сохранение большого количества записей чанками."""