fix pre-commit
Some checks failed
CI/CD Pipeline / Telegram Notify Success (push) Has been cancelled
CI/CD Pipeline / Run Tests (push) Has been cancelled
CI/CD Pipeline / Code Quality Checks (push) Has been cancelled
CI/CD Pipeline / Code Quality Checks (pull_request) Successful in 1m42s
CI/CD Pipeline / Run Tests (pull_request) Successful in 2m25s
CI/CD Pipeline / Telegram Notify Success (pull_request) Successful in 1m34s

This commit is contained in:
2026-03-17 13:55:34 +01:00
parent 3d298ce352
commit 25176f31b4
31 changed files with 653 additions and 553 deletions

View File

@@ -3,7 +3,11 @@ from __future__ import annotations
import io
from datetime import date
from apps.registers.services import ParsedOrganization, RegisterImportError, RegisterImportService
from apps.registers.services import (
ParsedOrganization,
RegisterImportError,
RegisterImportService,
)
from django.core.files.uploadedfile import SimpleUploadedFile
from django.test import TestCase
from openpyxl import Workbook
@@ -86,7 +90,9 @@ class RegisterImportServiceTest(TestCase):
def test_get_active_periods_by_org_returns_mapping(self):
registry = RegisterFactory()
active_period = RegistryMembershipPeriodFactory(registry=registry, ended_at=None)
active_period = RegistryMembershipPeriodFactory(
registry=registry, ended_at=None
)
RegistryMembershipPeriodFactory(
registry=registry,
started_at=date(2026, 1, 1),
@@ -224,7 +230,10 @@ class RegisterImportServiceTest(TestCase):
started_by_upload=upload,
)
queryset, resolved_date = RegisterImportService.get_registry_organizations_queryset(
(
queryset,
resolved_date,
) = RegisterImportService.get_registry_organizations_queryset(
registry=registry,
mn_ogrn=organization.mn_ogrn,
mn_inn=organization.mn_inn,
@@ -261,15 +270,21 @@ class RegisterImportServiceTest(TestCase):
def test_parse_xlsx_raises_on_invalid_workbook_headers_and_empty_rows(self):
broken = SimpleUploadedFile("broken.xlsx", b"not-an-excel")
with self.assertRaisesMessage(RegisterImportError, "Не удалось прочитать Excel файл"):
with self.assertRaisesMessage(
RegisterImportError, "Не удалось прочитать Excel файл"
):
RegisterImportService.parse_xlsx(broken)
no_headers = _upload("no-headers.xlsx", [])
with self.assertRaisesMessage(RegisterImportError, "Файл не содержит заголовков"):
with self.assertRaisesMessage(
RegisterImportError, "Файл не содержит заголовков"
):
RegisterImportService.parse_xlsx(no_headers)
missing_headers = _upload("missing.xlsx", [["pn_name", "mn_ogrn"]])
with self.assertRaisesMessage(RegisterImportError, "Отсутствуют обязательные колонки"):
with self.assertRaisesMessage(
RegisterImportError, "Отсутствуют обязательные колонки"
):
RegisterImportService.parse_xlsx(missing_headers)
empty_rows = _upload(
@@ -313,29 +328,47 @@ class RegisterImportServiceTest(TestCase):
self.assertTrue(RegisterImportService._is_empty_row((None, " ")))
self.assertFalse(RegisterImportService._is_empty_row((None, "x")))
self.assertEqual(
RegisterImportService._as_required_text(" Org ", field_name="pn_name", row_number=2),
RegisterImportService._as_required_text(
" Org ", field_name="pn_name", row_number=2
),
"Org",
)
self.assertEqual(
RegisterImportService._as_required_int("123.0", field_name="mn_inn", row_number=2),
RegisterImportService._as_required_int(
"123.0", field_name="mn_inn", row_number=2
),
123,
)
self.assertIsNone(
RegisterImportService._as_optional_int(" ", field_name="in_kpp", row_number=2)
RegisterImportService._as_optional_int(
" ", field_name="in_kpp", row_number=2
)
)
self.assertEqual(
RegisterImportService._as_numeric_text("123 456.0", field_name="mn_okpo", row_number=2),
RegisterImportService._as_numeric_text(
"123 456.0", field_name="mn_okpo", row_number=2
),
"123456",
)
with self.assertRaisesMessage(RegisterImportError, "поле pn_name обязательно"):
RegisterImportService._as_required_text("", field_name="pn_name", row_number=2)
RegisterImportService._as_required_text(
"", field_name="pn_name", row_number=2
)
with self.assertRaisesMessage(RegisterImportError, "поле mn_inn обязательно"):
RegisterImportService._as_required_int(None, field_name="mn_inn", row_number=2)
with self.assertRaisesMessage(RegisterImportError, "поле in_kpp должно быть числом"):
RegisterImportService._as_optional_int("abc", field_name="in_kpp", row_number=2)
RegisterImportService._as_required_int(
None, field_name="mn_inn", row_number=2
)
with self.assertRaisesMessage(
RegisterImportError, "поле in_kpp должно быть числом"
):
RegisterImportService._as_optional_int(
"abc", field_name="in_kpp", row_number=2
)
with self.assertRaisesMessage(
RegisterImportError,
"поле mn_okpo должно содержать только цифры",
):
RegisterImportService._as_numeric_text("ab12", field_name="mn_okpo", row_number=2)
RegisterImportService._as_numeric_text(
"ab12", field_name="mn_okpo", row_number=2
)