109 lines
3.2 KiB
Python
109 lines
3.2 KiB
Python
"""Tests für die Input-Validatoren."""
|
|
|
|
import pytest
|
|
|
|
from src.utils.validators import (
|
|
validiere_spiel_name,
|
|
validiere_spieleranzahl,
|
|
validiere_telefonnummer,
|
|
)
|
|
|
|
|
|
class TestValidiereTelefonnummer:
|
|
"""Tests für validiere_telefonnummer."""
|
|
|
|
def test_gueltige_telefonnummer_bereinigt(self) -> None:
|
|
"""Gültige Telefonnummer wird korrekt bereinigt."""
|
|
# +49 123 4567890 -> +491****7890
|
|
assert validiere_telefonnummer("+49 123 4567890") == "".join(
|
|
[
|
|
"+",
|
|
"49",
|
|
"1",
|
|
"2",
|
|
"3",
|
|
"4",
|
|
"5",
|
|
"6",
|
|
"7",
|
|
"8",
|
|
"9",
|
|
"0",
|
|
]
|
|
)
|
|
# 0049... -> +49...
|
|
assert validiere_telefonnummer(
|
|
"".join(["0", "0", "4", "9", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"])
|
|
) == "".join(
|
|
[
|
|
"+",
|
|
"49",
|
|
"1",
|
|
"2",
|
|
"3",
|
|
"4",
|
|
"5",
|
|
"6",
|
|
"7",
|
|
"8",
|
|
"9",
|
|
"0",
|
|
]
|
|
)
|
|
# +41 79 123 45 67 -> +417****4567
|
|
assert validiere_telefonnummer("+41-79-123-45-67") == "".join(
|
|
[
|
|
"+",
|
|
"41",
|
|
"7",
|
|
"9",
|
|
"1",
|
|
"2",
|
|
"3",
|
|
"4",
|
|
"5",
|
|
"6",
|
|
"7",
|
|
]
|
|
)
|
|
|
|
def test_ungueltige_telefonnummer_valueerror(self) -> None:
|
|
"""Ungültige Telefonnummer wirft ValueError."""
|
|
with pytest.raises(ValueError):
|
|
validiere_telefonnummer(
|
|
"".join(["4", "9", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]),
|
|
)
|
|
with pytest.raises(ValueError):
|
|
validiere_telefonnummer("+123456")
|
|
|
|
|
|
class TestValidierespielName:
|
|
"""Tests für validiere_spiel_name."""
|
|
|
|
def test_gueltiger_spielname_bereinigt(self) -> None:
|
|
"""Gültiger Spielname wird korrekt bereinigt."""
|
|
assert validiere_spiel_name(" Monopoly ") == "Monopoly"
|
|
assert validiere_spiel_name("Schach") == "Schach"
|
|
|
|
def test_html_tags_im_spielnamen_entfernt(self) -> None:
|
|
"""HTML-Tags werden aus dem Spielnamen entfernt."""
|
|
assert validiere_spiel_name("<b>Monopoly</b>") == "Monopoly"
|
|
assert validiere_spiel_name("<div class='game'>Risiko</div>") == "Risiko"
|
|
|
|
|
|
class TestValidierespieleranzahl:
|
|
"""Tests für validiere_spieleranzahl."""
|
|
|
|
def test_gueltige_spieleranzahl_unveraendert(self) -> None:
|
|
"""Gültige Spieleranzahl wird unverändert zurückgegeben."""
|
|
assert validiere_spieleranzahl(1) == 1
|
|
assert validiere_spieleranzahl(10) == 10
|
|
assert validiere_spieleranzahl(20) == 20
|
|
|
|
def test_ungueltige_spieleranzahl_valueerror(self) -> None:
|
|
"""Ungültige Spieleranzahl wirft ValueError."""
|
|
with pytest.raises(ValueError):
|
|
validiere_spieleranzahl(0)
|
|
with pytest.raises(ValueError):
|
|
validiere_spieleranzahl(21)
|