feat: use authoritative organization directory
Some checks failed
CI/CD Pipeline / Quality Gate (push) Failing after 9s
CI/CD Pipeline / Build and Push Images (push) Has been skipped
CI/CD Pipeline / Deploy Dev via Compose (push) Has been skipped
CI/CD Pipeline / Internal Notify (push) Successful in 0s

This commit is contained in:
2026-06-07 16:04:43 +02:00
parent 79f0f8ebf7
commit 6ba8fa8d88
41 changed files with 2781 additions and 1058 deletions

View File

@@ -14,11 +14,12 @@ from apps.parsers.models import FinancialReport
from django.core.files.uploadedfile import SimpleUploadedFile
from django.test import override_settings
from django.urls import reverse
from openpyxl import Workbook
from organizations.models import (
Organization,
OrganizationSourceFinancialLine,
OrganizationSourceRecord,
)
from openpyxl import Workbook
from rest_framework import status
from rest_framework.test import APITestCase
@@ -53,6 +54,13 @@ def _build_fns_zip_bytes(file_map: dict[str, bytes]) -> bytes:
return buffer.getvalue()
def _ensure_directory_organization(*, ogrn: str) -> Organization:
return Organization.objects.create(
name=f"ФНС {ogrn}",
ogrn=ogrn,
)
class FNSUploadIntegrationTest(APITestCase):
"""Tests real upload + processing of FNS files."""
@@ -73,6 +81,7 @@ class FNSUploadIntegrationTest(APITestCase):
content = _build_fns_excel_bytes()
external_id = _digits(5)
ogrn = _digits(13)
_ensure_directory_organization(ogrn=ogrn)
filename = f"fin_{external_id}_{ogrn}.xlsx"
upload = SimpleUploadedFile(
filename,
@@ -119,6 +128,7 @@ class FNSUploadIntegrationTest(APITestCase):
content = _build_fns_excel_bytes()
external_id = _digits(3)
ogrn = _digits(13)
_ensure_directory_organization(ogrn=ogrn)
filename = f"fin_{external_id}_{ogrn}.xlsx"
upload1 = SimpleUploadedFile(
filename,
@@ -165,6 +175,7 @@ class FNSUploadIntegrationTest(APITestCase):
content = _build_fns_excel_bytes()
external_id = _digits(5)
ogrn = _digits(13)
_ensure_directory_organization(ogrn=ogrn)
filename = f"fin_{external_id}_{ogrn}.xlsx"
upload = SimpleUploadedFile(
filename,
@@ -230,6 +241,7 @@ class FNSUploadIntegrationTest(APITestCase):
content = _build_fns_excel_bytes()
external_id = _digits(5)
ogrn = _digits(13)
_ensure_directory_organization(ogrn=ogrn)
filename = f"fin_{external_id}_{ogrn}.xlsx"
upload = SimpleUploadedFile(
filename,
@@ -337,6 +349,7 @@ class FNSUploadIntegrationTest(APITestCase):
content = _build_fns_excel_bytes()
external_id = _digits(5)
ogrn = _digits(13)
_ensure_directory_organization(ogrn=ogrn)
filename = f"fin_{external_id}_{ogrn}.xlsx"
upload = SimpleUploadedFile(
filename,
@@ -370,6 +383,7 @@ class FNSUploadIntegrationTest(APITestCase):
content = _build_fns_excel_bytes()
external_id = _digits(5)
ogrn = _digits(13)
_ensure_directory_organization(ogrn=ogrn)
filename = f"fin_{external_id}_{ogrn}.xlsx"
upload = SimpleUploadedFile(
filename,
@@ -500,8 +514,12 @@ class FNSUploadIntegrationTest(APITestCase):
)
def test_queue_zip_archive_processes_valid_files_and_skips_invalid(self):
first_name = f"fin_{_digits(5)}_{_digits(13)}.xlsx"
second_name = f"fin_{_digits(5)}_{_digits(13)}.xlsx"
first_ogrn = _digits(13)
second_ogrn = _digits(13)
_ensure_directory_organization(ogrn=first_ogrn)
_ensure_directory_organization(ogrn=second_ogrn)
first_name = f"fin_{_digits(5)}_{first_ogrn}.xlsx"
second_name = f"fin_{_digits(5)}_{second_ogrn}.xlsx"
zip_content = _build_fns_zip_bytes(
{
first_name: _build_fns_excel_bytes(),