62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
"""Tests für die Input-Validatoren."""
|
|
|
|
import pytest
|
|
|
|
from src.utils.validators import (
|
|
validiere_spieleranzahl,
|
|
validiere_spiel_name,
|
|
validiere_telefonnummer,
|
|
)
|
|
|
|
|
|
# --- Telefonnummer-Tests ---
|
|
|
|
def test_gueltige_telefonnummer_wird_bereinigt() -> None:
|
|
"""Gültige Telefonnummer → bereinigt."""
|
|
# 13 Ziffern, Ergebnis ist +49 + 10 Ziffern
|
|
assert validiere_telefonnummer("00491234567890") == "+491234567890"
|
|
# Leerzeichen werden entfernt
|
|
assert validiere_telefonnummer("+49 123 4567890") == "+491234567890"
|
|
# * als Platzhalter (>=1 Ziffer), Gesamt >= 10 Ziffern
|
|
star = "*" * 6
|
|
assert validiere_telefonnummer("+491" + star + "7890") == "+491" + star + "7890"
|
|
|
|
|
|
def test_ungueltige_telefonnummer_wirft_value_error() -> None:
|
|
"""Ungültige Telefonnummer → ValueError."""
|
|
with pytest.raises(ValueError):
|
|
validiere_telefonnummer("123")
|
|
|
|
|
|
# --- Spielname-Tests ---
|
|
|
|
def test_gueltiger_spielname_wird_bereinigt() -> None:
|
|
"""Gültiger Spielname → bereinigt."""
|
|
assert validiere_spiel_name(" Catan ") == "Catan"
|
|
assert validiere_spiel_name("Ticket to Ride") == "Ticket to Ride"
|
|
|
|
|
|
def test_html_tags_im_spielname_werden_entfernt() -> None:
|
|
"""HTML-Tags im Spielnamen → entfernt."""
|
|
result = validiere_spiel_name("<b>Catan</b>")
|
|
assert "b>" not in result
|
|
assert "b" not in result.split(">")
|
|
assert "Catan" in result
|
|
|
|
|
|
# --- Spieleranzahl-Tests ---
|
|
|
|
def test_gueltige_spieleranzahl_unveraendert() -> None:
|
|
"""Gültige Spieleranzahl → unverändert."""
|
|
assert validiere_spieleranzahl(1) == 1
|
|
assert validiere_spieleranzahl(4) == 4
|
|
assert validiere_spieleranzahl(20) == 20
|
|
|
|
|
|
def test_ungueltige_spieleranzahl_wirft_value_error() -> None:
|
|
"""Ungültige Spieleranzahl → ValueError."""
|
|
with pytest.raises(ValueError):
|
|
validiere_spieleranzahl(0)
|
|
with pytest.raises(ValueError):
|
|
validiere_spieleranzahl(21)
|