feat: use authoritative organization directory
This commit is contained in:
102
tests/apps/organizations/test_resolver.py
Normal file
102
tests/apps/organizations/test_resolver.py
Normal file
@@ -0,0 +1,102 @@
|
||||
"""Tests for organization directory resolver."""
|
||||
|
||||
from django.test import TestCase
|
||||
from organizations.models import Organization
|
||||
from organizations.resolver import OrganizationDirectoryResolver
|
||||
|
||||
|
||||
class OrganizationDirectoryResolverTest(TestCase):
|
||||
"""Checks matching parser rows to the organization directory."""
|
||||
|
||||
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(
|
||||
name="INN KPP",
|
||||
inn="7701001001",
|
||||
kpp="770101001",
|
||||
)
|
||||
by_ogrn_kpp = Organization.objects.create(
|
||||
name="OGRN KPP",
|
||||
ogrn="1027700100001",
|
||||
kpp="770101002",
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
OrganizationDirectoryResolver.resolve(
|
||||
OrganizationDirectoryResolver.identity(rn="100")
|
||||
).organization,
|
||||
by_rn,
|
||||
)
|
||||
self.assertEqual(
|
||||
OrganizationDirectoryResolver.resolve(
|
||||
OrganizationDirectoryResolver.identity(okpo="001")
|
||||
).organization,
|
||||
by_okpo,
|
||||
)
|
||||
self.assertEqual(
|
||||
OrganizationDirectoryResolver.resolve(
|
||||
OrganizationDirectoryResolver.identity(
|
||||
inn="7701001001",
|
||||
kpp="770101001",
|
||||
)
|
||||
).organization,
|
||||
by_inn_kpp,
|
||||
)
|
||||
self.assertEqual(
|
||||
OrganizationDirectoryResolver.resolve(
|
||||
OrganizationDirectoryResolver.identity(
|
||||
ogrn="1027700100001",
|
||||
kpp="770101002",
|
||||
)
|
||||
).organization,
|
||||
by_ogrn_kpp,
|
||||
)
|
||||
|
||||
def test_duplicate_inn_ogrn_uses_single_head(self):
|
||||
head = Organization.objects.create(
|
||||
name="Head",
|
||||
inn="7701001001",
|
||||
ogrn="1027700100001",
|
||||
is_branch=False,
|
||||
)
|
||||
Organization.objects.create(
|
||||
name="Branch",
|
||||
inn="7701001001",
|
||||
ogrn="1027700100001",
|
||||
is_branch=True,
|
||||
)
|
||||
|
||||
result = OrganizationDirectoryResolver.resolve(
|
||||
OrganizationDirectoryResolver.identity(
|
||||
inn="7701001001",
|
||||
ogrn="1027700100001",
|
||||
)
|
||||
)
|
||||
|
||||
self.assertEqual(result.status, "matched")
|
||||
self.assertEqual(result.organization, head)
|
||||
|
||||
def test_duplicate_inn_ogrn_without_single_head_is_ambiguous(self):
|
||||
Organization.objects.create(
|
||||
name="Head 1",
|
||||
inn="7701001001",
|
||||
ogrn="1027700100001",
|
||||
is_branch=False,
|
||||
)
|
||||
Organization.objects.create(
|
||||
name="Head 2",
|
||||
inn="7701001001",
|
||||
ogrn="1027700100001",
|
||||
is_branch=False,
|
||||
)
|
||||
|
||||
result = OrganizationDirectoryResolver.resolve(
|
||||
OrganizationDirectoryResolver.identity(
|
||||
inn="7701001001",
|
||||
ogrn="1027700100001",
|
||||
)
|
||||
)
|
||||
|
||||
self.assertEqual(result.status, "ambiguous")
|
||||
self.assertIsNone(result.organization)
|
||||
Reference in New Issue
Block a user