"""Нормализация алиаса ЮЛ (§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)