feat(organizations): migrate source storage to polymorphic records
This commit is contained in:
@@ -5,7 +5,7 @@ from types import SimpleNamespace
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
from apps.core.models import BackgroundJob, JobStatus
|
||||
from apps.parsers.models import GenericParserRecord, ParserLoadLog
|
||||
from apps.parsers.models import ParserLoadLog
|
||||
from apps.parsers.source_cards import (
|
||||
SOURCE_CARD_DEFINITIONS,
|
||||
SourceCardDefinition,
|
||||
@@ -15,9 +15,37 @@ from apps.parsers.source_cards import (
|
||||
from django.http import Http404
|
||||
from django.test import SimpleTestCase, TestCase, override_settings
|
||||
from django.utils import timezone
|
||||
from organizations.source_ingestion import (
|
||||
OrganizationSourceIngestionService,
|
||||
SourceRecordInput,
|
||||
)
|
||||
from rest_framework.exceptions import ValidationError
|
||||
|
||||
|
||||
def _save_source_record(
|
||||
*,
|
||||
source: str,
|
||||
external_id: str,
|
||||
inn: str = "",
|
||||
organization_name: str = "",
|
||||
title: str = "",
|
||||
payload: dict | None = None,
|
||||
) -> None:
|
||||
OrganizationSourceIngestionService.save_records(
|
||||
source=source,
|
||||
load_batch=1,
|
||||
records=[
|
||||
SourceRecordInput(
|
||||
external_id=external_id,
|
||||
title=title,
|
||||
organization_name=organization_name or title or external_id,
|
||||
inn=inn,
|
||||
payload=payload or {},
|
||||
)
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
class SourceCardServiceUnitTest(SimpleTestCase):
|
||||
def test_list_cards_exposes_all_frontend_category_slugs_in_menu_order(self):
|
||||
self.assertEqual(
|
||||
@@ -363,19 +391,19 @@ class SourceCardServiceUnitTest(SimpleTestCase):
|
||||
@override_settings(PARSER_STALE_LOAD_MAX_AGE_MINUTES=90)
|
||||
class SourceCardServiceDatabaseTest(TestCase):
|
||||
def test_defense_unreliable_suppliers_counts_unique_generic_organizations(self):
|
||||
GenericParserRecord.objects.create(
|
||||
_save_source_record(
|
||||
source=ParserLoadLog.Source.UNFAIR_SUPPLIERS,
|
||||
load_batch=1,
|
||||
external_id="unfair-1",
|
||||
inn="7701234567",
|
||||
organization_name='ООО "Поставщик"',
|
||||
title="Недобросовестный поставщик",
|
||||
payload={"number": "unfair-1"},
|
||||
)
|
||||
GenericParserRecord.objects.create(
|
||||
_save_source_record(
|
||||
source=ParserLoadLog.Source.FAS_GOZ,
|
||||
load_batch=1,
|
||||
external_id="goz-1",
|
||||
inn="7701234567",
|
||||
organization_name='ООО "Поставщик"',
|
||||
title="Уклонение от ГОЗ",
|
||||
payload={"number": "goz-1"},
|
||||
)
|
||||
@@ -399,19 +427,19 @@ class SourceCardServiceDatabaseTest(TestCase):
|
||||
self.assertEqual(card["organizations_count"], 1)
|
||||
|
||||
def test_public_procurements_counts_generic_eis_sources(self):
|
||||
GenericParserRecord.objects.create(
|
||||
_save_source_record(
|
||||
source=ParserLoadLog.Source.PROCUREMENTS_44FZ,
|
||||
load_batch=1,
|
||||
external_id="notice-1",
|
||||
inn="7701234567",
|
||||
organization_name="ГБУ Заказчик",
|
||||
title="Закупка 44-ФЗ",
|
||||
payload={"number": "notice-1"},
|
||||
)
|
||||
GenericParserRecord.objects.create(
|
||||
_save_source_record(
|
||||
source=ParserLoadLog.Source.CONTRACTS,
|
||||
load_batch=1,
|
||||
external_id="contract-1",
|
||||
inn="7701234567",
|
||||
organization_name="ГБУ Заказчик",
|
||||
title="Контракт ЕИС",
|
||||
payload={"number": "contract-1"},
|
||||
)
|
||||
@@ -435,30 +463,24 @@ class SourceCardServiceDatabaseTest(TestCase):
|
||||
self.assertEqual(card["organizations_count"], 1)
|
||||
|
||||
def test_public_procurements_counts_generic_buyers_without_inn(self):
|
||||
GenericParserRecord.objects.create(
|
||||
_save_source_record(
|
||||
source=ParserLoadLog.Source.PROCUREMENTS_44FZ,
|
||||
load_batch=1,
|
||||
external_id="notice-1",
|
||||
inn="",
|
||||
organisation_name="ГБУ Заказчик",
|
||||
organization_name="ГБУ Заказчик",
|
||||
title="Закупка 44-ФЗ",
|
||||
payload={"Заказчик": "ГБУ Заказчик"},
|
||||
)
|
||||
GenericParserRecord.objects.create(
|
||||
_save_source_record(
|
||||
source=ParserLoadLog.Source.CONTRACTS,
|
||||
load_batch=1,
|
||||
external_id="contract-1",
|
||||
inn="",
|
||||
organisation_name="ГБУ Заказчик",
|
||||
organization_name="ГБУ Заказчик",
|
||||
title="Контракт ЕИС",
|
||||
payload={"Заказчик": "ГБУ Заказчик"},
|
||||
)
|
||||
GenericParserRecord.objects.create(
|
||||
_save_source_record(
|
||||
source=ParserLoadLog.Source.PROCUREMENTS_223FZ,
|
||||
load_batch=1,
|
||||
external_id="notice-2",
|
||||
inn="",
|
||||
organisation_name="АО Другой заказчик",
|
||||
organization_name="АО Другой заказчик",
|
||||
title="Закупка 223-ФЗ",
|
||||
payload={"Наименование заказчика": "АО Другой заказчик"},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user