normalize_alias (lower, ё→е, без пунктуации и ОПФ), POST/DELETE
/directories/legal-entities/{id}/aliases, конфликты ALIAS_EXISTS /
ALIAS_TAKEN (с legal_entity_id владельца), EMPTY_ALIAS, аудит
LEGAL_ENTITY_CHANGE по legal_entity_alias.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
53 lines
2.3 KiB
Python
53 lines
2.3 KiB
Python
"""Нормализация алиаса ЮЛ (§3 п. 4): lower, ё→е, без пунктуации/кавычек/ОПФ, схлопнутые пробелы."""
|
||
|
||
import pytest
|
||
|
||
from src.domain.aliases import LEGAL_FORMS, normalize_alias
|
||
|
||
|
||
@pytest.mark.parametrize(
|
||
("raw", "expected"),
|
||
[
|
||
("ООО «Пекарня Счастливочная»", "пекарня счастливочная"),
|
||
("Пекарня Счастливочная, ООО", "пекарня счастливочная"),
|
||
('АО "РУССКИЙ БИСКВИТ"', "русский бисквит"),
|
||
("ИП Иванов И.И.", "иванов и и"),
|
||
("Пекарня Счастливочная ООО", "пекарня счастливочная"),
|
||
(" Пекарня «Счастливочная» ", "пекарня счастливочная"),
|
||
("Ёлка и Ёж", "елка и еж"),
|
||
("ЁЛКА", "елка"),
|
||
("„Пекарня“ ПАО", "пекарня"),
|
||
("Пекарня\tСчастливочная\n", "пекарня счастливочная"),
|
||
],
|
||
)
|
||
def test_normalize_alias(raw: str, expected: str) -> None:
|
||
assert normalize_alias(raw) == expected
|
||
|
||
|
||
@pytest.mark.parametrize("raw", ["ООО", "ООО «АО»", " ип, ооо ", "«»", "", " "])
|
||
def test_only_legal_forms_or_punctuation_gives_empty(raw: str) -> None:
|
||
assert normalize_alias(raw) == ""
|
||
|
||
|
||
@pytest.mark.parametrize(
|
||
("raw", "expected"),
|
||
[("Плооо", "плооо"), ("Оооптторг", "оооптторг"), ("Саоп ао", "саоп"), ("ТСЖ Ипподром", "ипподром")],
|
||
)
|
||
def test_legal_form_is_removed_only_as_whole_token(raw: str, expected: str) -> None:
|
||
assert normalize_alias(raw) == expected
|
||
|
||
|
||
def test_same_name_in_different_spelling_is_equal() -> None:
|
||
forms = [
|
||
"ООО «Пекарня Счастливочная»",
|
||
"Пекарня Счастливочная, ООО",
|
||
"пекарня счастливочная",
|
||
"ООО Пекарня Счастливочная",
|
||
]
|
||
assert len({normalize_alias(form) for form in forms}) == 1
|
||
|
||
|
||
def test_legal_forms_are_lowercase_tokens() -> None:
|
||
assert {"ооо", "ао", "пао", "зао", "ип"} <= LEGAL_FORMS
|
||
assert all(form == form.lower() and " " not in form for form in LEGAL_FORMS)
|