Add organization stats endpoint
This commit is contained in:
@@ -6,7 +6,7 @@ import io
|
||||
from datetime import date
|
||||
from unittest.mock import patch
|
||||
|
||||
from apps.registers.models import Organization, RegistryMembershipPeriod
|
||||
from apps.registers.models import Organization, Register, RegistryMembershipPeriod
|
||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||
from django.db import IntegrityError
|
||||
from django.urls import reverse
|
||||
@@ -198,6 +198,55 @@ class RegistersViewsTest(APITestCase):
|
||||
"/api/v2/registers/rosatom-goz/upload/",
|
||||
)
|
||||
|
||||
def test_stat_organizations_endpoint_returns_registry_cards(self):
|
||||
opk_registry, _ = Register.objects.get_or_create(name="Реестр предприятий ОПК")
|
||||
rosatom_registry, _ = Register.objects.get_or_create(
|
||||
name="Реестр госкорпорации Росатом"
|
||||
)
|
||||
roscosmos_goz_registry, _ = Register.objects.get_or_create(
|
||||
name="Реестр госкорпорации Роскосмос ГОЗ"
|
||||
)
|
||||
opk_organization = OrganizationFactory()
|
||||
shared_organization = OrganizationFactory()
|
||||
inactive_organization = OrganizationFactory()
|
||||
RegistryMembershipPeriodFactory(
|
||||
registry=opk_registry,
|
||||
organization=opk_organization,
|
||||
)
|
||||
RegistryMembershipPeriodFactory(
|
||||
registry=rosatom_registry,
|
||||
organization=opk_organization,
|
||||
)
|
||||
RegistryMembershipPeriodFactory(
|
||||
registry=rosatom_registry,
|
||||
organization=shared_organization,
|
||||
)
|
||||
RegistryMembershipPeriodFactory(
|
||||
registry=roscosmos_goz_registry,
|
||||
organization=inactive_organization,
|
||||
ended_at=date(2026, 6, 1),
|
||||
)
|
||||
|
||||
response = self.client.get("/api/v1/stat/organizations/")
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
payload = response.data["data"]
|
||||
self.assertEqual(payload["total_organizations"], 3)
|
||||
self.assertEqual(payload["active_registry_organizations"], 2)
|
||||
self.assertEqual(payload["counts"]["total"], 3)
|
||||
self.assertEqual(payload["counts"]["opk"], 1)
|
||||
self.assertEqual(payload["counts"]["rosatom"], 2)
|
||||
self.assertEqual(payload["counts"]["roscosmos-goz"], 0)
|
||||
cards_by_slug = {item["slug"]: item for item in payload["cards"]}
|
||||
self.assertEqual(
|
||||
cards_by_slug["total"]["title"],
|
||||
"Общее количество организаций",
|
||||
)
|
||||
self.assertEqual(
|
||||
cards_by_slug["rosatom"]["registry_name"],
|
||||
"Реестр госкорпорации Росатом",
|
||||
)
|
||||
|
||||
def test_v2_registry_slug_upload_does_not_refresh_snapshots_after_import_error(self):
|
||||
rows = [
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user