Implement exchange imports and frontend reporting APIs
Some checks failed
CI/CD Pipeline / Code Quality Checks (push) Failing after 3m50s
CI/CD Pipeline / Run Tests (push) Successful in 3m57s
CI/CD Pipeline / Build Docker Images (push) Has been skipped
CI/CD Pipeline / Push to Gitea Registry (push) Has been skipped
CI/CD Pipeline / Deploy to Server (push) Has been skipped

This commit is contained in:
2026-04-07 16:31:04 +02:00
parent 76a86d0b20
commit 697ecb7d1c
155 changed files with 5604 additions and 346 deletions

View File

@@ -4,11 +4,11 @@ from __future__ import annotations
from datetime import date
from apps.registers.models import Register, RegisterUpload, RegistryMembershipPeriod
from django.test import override_settings
from rest_framework import status
from rest_framework.test import APITestCase
from apps.registers.models import Register, RegisterUpload, RegistryMembershipPeriod
from tests.apps.organization.factories import OrganizationFactory
from tests.apps.user.factories import UserFactory
@@ -22,7 +22,11 @@ class OrganizationApiTest(APITestCase):
self.client.force_authenticate(self.user)
def test_list_includes_only_active_registry_names(self):
organization = OrganizationFactory.create(name="АО Альфа")
organization = OrganizationFactory.create(
name="АО Альфа",
short_name="АО «Альфа»",
organization_type="ao",
)
active_register = Register.objects.create(name="Реестр ОПК")
closed_register = Register.objects.create(name="Архивный реестр")
active_upload = RegisterUpload.objects.create(
@@ -58,10 +62,20 @@ class OrganizationApiTest(APITestCase):
response = self.client.get("/api/v1/organizations/")
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data["data"][0]["active_registry_names"], ["Реестр ОПК"])
self.assertEqual(
response.data["results"][0]["active_registry_names"], ["Реестр ОПК"]
)
self.assertEqual(response.data["results"][0]["corporation_scope"], ["opk"])
self.assertEqual(response.data["results"][0]["short_name"], "АО «Альфа»")
def test_detail_includes_active_registries(self):
organization = OrganizationFactory.create()
organization = OrganizationFactory.create(
short_name="АО «Бета»",
general_director_name="Иванов Иван Иванович",
general_director_inn="123456789012",
financial_reports_available=True,
tax_reports_available=True,
)
register = Register.objects.create(name="Реестр Роскосмос")
upload = RegisterUpload.objects.create(
registry=register,
@@ -81,13 +95,18 @@ class OrganizationApiTest(APITestCase):
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(
response.data["data"]["active_registry_names"],
response.data["summary"]["active_registry_names"],
["Реестр Роскосмос"],
)
self.assertEqual(
response.data["data"]["active_registries"],
response.data["active_registries"],
[{"id": str(register.id), "name": "Реестр Роскосмос"}],
)
self.assertEqual(response.data["corporation_scope"], ["roscosmos"])
self.assertEqual(
response.data["general_director"]["full_name"],
"Иванов Иван Иванович",
)
def test_registry_filter_uses_only_active_memberships(self):
active_organization = OrganizationFactory.create(name="АО Актив")
@@ -119,5 +138,45 @@ class OrganizationApiTest(APITestCase):
response = self.client.get(f"/api/v1/organizations/?registry={register.id}")
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(len(response.data["data"]), 1)
self.assertEqual(response.data["data"][0]["id"], str(active_organization.id))
self.assertEqual(len(response.data["results"]), 1)
self.assertEqual(response.data["results"][0]["id"], str(active_organization.id))
def test_corporation_scope_filter_uses_active_registers(self):
rosatom_org = OrganizationFactory.create(name="АО Росатом")
roscosmos_org = OrganizationFactory.create(name="АО Роскосмос")
rosatom_register = Register.objects.create(name="Реестр госкорпорации Росатом")
roscosmos_register = Register.objects.create(
name="Реестр госкорпорации Роскосмос"
)
rosatom_upload = RegisterUpload.objects.create(
registry=rosatom_register,
actual_date=date(2026, 4, 1),
file_name="rosatom.xlsx",
file_hash="rosatom-hash",
rows_count=1,
)
roscosmos_upload = RegisterUpload.objects.create(
registry=roscosmos_register,
actual_date=date(2026, 4, 1),
file_name="roscosmos.xlsx",
file_hash="roscosmos-hash",
rows_count=1,
)
RegistryMembershipPeriod.objects.create(
registry=rosatom_register,
organization=rosatom_org,
started_at=date(2026, 4, 1),
started_by_upload=rosatom_upload,
)
RegistryMembershipPeriod.objects.create(
registry=roscosmos_register,
organization=roscosmos_org,
started_at=date(2026, 4, 1),
started_by_upload=roscosmos_upload,
)
response = self.client.get("/api/v1/organizations/?corporation_scope=rosatom")
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(len(response.data["results"]), 1)
self.assertEqual(response.data["results"][0]["id"], str(rosatom_org.id))