fix: resolve parser organizations from directory only
Some checks failed
CI/CD Pipeline / Quality Gate (push) Failing after 32s
CI/CD Pipeline / Build and Push Images (push) Has been skipped
CI/CD Pipeline / Internal Notify (push) Successful in 0s
CI/CD Pipeline / Deploy Dev via Compose (push) Has been skipped

This commit is contained in:
2026-06-07 16:28:57 +02:00
parent 6ba8fa8d88
commit 802257a757
19 changed files with 184 additions and 83 deletions

View File

@@ -1,6 +1,7 @@
"""Tests for organization directory resolver."""
from django.test import TestCase
from django.utils import timezone
from organizations.models import Organization
from organizations.resolver import OrganizationDirectoryResolver
@@ -8,15 +9,20 @@ from organizations.resolver import OrganizationDirectoryResolver
class OrganizationDirectoryResolverTest(TestCase):
"""Checks matching parser rows to the organization directory."""
@staticmethod
def _directory_organization(**kwargs) -> Organization:
kwargs.setdefault("directory_imported_at", timezone.now())
return Organization.objects.create(**kwargs)
def test_resolves_by_rn_okpo_and_exact_pairs(self):
by_rn = Organization.objects.create(name="RN", rn=100)
by_okpo = Organization.objects.create(name="OKPO", okpo="001")
by_inn_kpp = Organization.objects.create(
by_rn = self._directory_organization(name="RN", rn=100)
by_okpo = self._directory_organization(name="OKPO", okpo="001")
by_inn_kpp = self._directory_organization(
name="INN KPP",
inn="7701001001",
kpp="770101001",
)
by_ogrn_kpp = Organization.objects.create(
by_ogrn_kpp = self._directory_organization(
name="OGRN KPP",
ogrn="1027700100001",
kpp="770101002",
@@ -54,13 +60,13 @@ class OrganizationDirectoryResolverTest(TestCase):
)
def test_duplicate_inn_ogrn_uses_single_head(self):
head = Organization.objects.create(
head = self._directory_organization(
name="Head",
inn="7701001001",
ogrn="1027700100001",
is_branch=False,
)
Organization.objects.create(
self._directory_organization(
name="Branch",
inn="7701001001",
ogrn="1027700100001",
@@ -78,13 +84,13 @@ class OrganizationDirectoryResolverTest(TestCase):
self.assertEqual(result.organization, head)
def test_duplicate_inn_ogrn_without_single_head_is_ambiguous(self):
Organization.objects.create(
self._directory_organization(
name="Head 1",
inn="7701001001",
ogrn="1027700100001",
is_branch=False,
)
Organization.objects.create(
self._directory_organization(
name="Head 2",
inn="7701001001",
ogrn="1027700100001",
@@ -100,3 +106,20 @@ class OrganizationDirectoryResolverTest(TestCase):
self.assertEqual(result.status, "ambiguous")
self.assertIsNone(result.organization)
def test_ignores_legacy_organization_matches(self):
Organization.objects.create(
name="Legacy",
inn="7701001001",
kpp="770101001",
)
result = OrganizationDirectoryResolver.resolve(
OrganizationDirectoryResolver.identity(
inn="7701001001",
kpp="770101001",
)
)
self.assertEqual(result.status, "unmatched")
self.assertIsNone(result.organization)