gateway/tests/unit/shared/test_mandateNameUtils.py

56 lines
2 KiB
Python

#!/usr/bin/env python3
# Copyright (c) 2025 Patrick Motsch
# All rights reserved.
"""Unit tests for mandateNameUtils (slug, validation, unique allocation)."""
import pytest
from modules.shared.mandateNameUtils import (
allocateUniqueMandateSlug,
isValidMandateName,
slugifyMandateName,
transliterateGerman,
)
class TestTransliterateGerman:
def test_transliterateGerman_umlauts(self):
assert transliterateGerman("Müller") == "Mueller"
assert transliterateGerman("Größe") == "Groesse"
assert transliterateGerman("Fußball") == "Fussball"
class TestIsValidMandateName:
def test_isValidMandateName_ok(self):
assert isValidMandateName("ab") is True
assert isValidMandateName("a-b") is True
assert isValidMandateName("root") is True
assert isValidMandateName("mn-2") is True
def test_isValidMandateName_rejects(self):
assert isValidMandateName("a") is False
assert isValidMandateName("") is False
assert isValidMandateName("Home patrick") is False
assert isValidMandateName("UPPER") is False
assert isValidMandateName("a--b") is False
assert isValidMandateName("-ab") is False
assert isValidMandateName("ab-") is False
class TestSlugifyMandateName:
def test_slugifyMandateName_basic(self):
assert slugifyMandateName("Müller AG") == "mueller-ag"
assert slugifyMandateName(" Foo Bar ") == "foo-bar"
def test_slugifyMandateName_empty(self):
assert slugifyMandateName("") == "mn"
assert slugifyMandateName(" ") == "mn"
class TestAllocateUniqueMandateSlug:
def test_allocateUniqueMandateSlug_first_free(self):
assert allocateUniqueMandateSlug("mueller-ag", ["other"]) == "mueller-ag"
def test_allocateUniqueMandateSlug_collision(self):
assert allocateUniqueMandateSlug("mueller-ag", ["mueller-ag"]) == "mueller-ag-2"
assert allocateUniqueMandateSlug("mueller-ag", ["mueller-ag", "mueller-ag-2"]) == "mueller-ag-3"