fix: resolve parser organizations from directory only
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user