From 991b08263f490ba9ced0258cb216600a4cf780fc Mon Sep 17 00:00:00 2001 From: Aleksandr Meshchriakov Date: Wed, 22 Jul 2026 14:23:04 +0200 Subject: [PATCH] fix: exclude demo companies from state corp exchange --- src/apps/exchange/state_corp_services.py | 5 +++- .../apps/exchange/test_state_corp_services.py | 25 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/apps/exchange/state_corp_services.py b/src/apps/exchange/state_corp_services.py index a6ecf75..5d5125d 100644 --- a/src/apps/exchange/state_corp_services.py +++ b/src/apps/exchange/state_corp_services.py @@ -35,6 +35,7 @@ from django.conf import settings from django.db.models import Q from django.utils import timezone from organizations.models import Organization, OrganizationSourceRecord +from organizations.test_companies import TestCompanyDatasetService class StateCorpExchangeError(ValueError): @@ -289,7 +290,9 @@ class StateCorpExchangeService: @classmethod def _rosatom_roscosmos_queryset(cls): - queryset = Organization.objects.exclude(inn="") + queryset = Organization.objects.exclude(inn="").exclude( + uid__in=TestCompanyDatasetService.company_uids() + ) name_query = Q() for keyword in cls.ROSATOM_ROSCOSMOS_GK_NAME_KEYWORDS: name_query |= Q(gk_name__icontains=keyword) diff --git a/tests/apps/exchange/test_state_corp_services.py b/tests/apps/exchange/test_state_corp_services.py index 3720266..36a3ad5 100644 --- a/tests/apps/exchange/test_state_corp_services.py +++ b/tests/apps/exchange/test_state_corp_services.py @@ -23,6 +23,7 @@ from apps.parsers.models import ( from cryptography.hazmat.primitives.ciphers.aead import AESGCM from django.test import TestCase, override_settings from organizations.models import Organization +from organizations.test_companies import TestCompanyDatasetService from tests.apps.parsers.factories import ( IndustrialCertificateRecordFactory, @@ -67,6 +68,30 @@ TEST_STATE_CORP_TOKEN = "state-corp-test-exchange-token" # noqa: S105 class StateCorpExchangeServiceTest(TestCase): """Verify package compatibility with state-corp receiver contract.""" + def test_default_package_excludes_deterministic_test_companies(self): + real_organization = Organization.objects.create( + rn=1001, + name="Реальная организация", + inn="7707083893", + gk_name="Росатом", + ) + Organization.objects.create( + uid=TestCompanyDatasetService.company_uids()[0], + rn=9001, + name="Тестовая компания 1", + inn="7700000001", + gk_name="Росатом", + ) + + package = StateCorpExchangeService.build_package() + payload = _decode_package_payload(package) + + self.assertEqual(package.payload_counts["organizations"], 1) + self.assertEqual( + [row["mostovik_uid"] for row in payload["data"]["organizations"]], + [str(real_organization.uid)], + ) + def test_build_package_contains_expected_payload(self): organization = Organization.objects.create( rn=1001,