61 lines
1.7 KiB
Python
61 lines
1.7 KiB
Python
"""Tests für das Submission-Pydantic-Modell."""
|
|
|
|
from datetime import datetime
|
|
|
|
import pytest
|
|
from pydantic import ValidationError
|
|
|
|
from src.models.submission import Submission
|
|
|
|
|
|
def test_gueltige_submission_alle_felder_korrekt() -> None:
|
|
"""Gültige Submission erstellen — alle Felder korrekt."""
|
|
sub = Submission(
|
|
message_id="msg_001",
|
|
plattform="whatsapp",
|
|
absender="+491234567890",
|
|
text="Hallo, kennt jemand ein gutes Kartenspiele?",
|
|
)
|
|
assert sub.message_id == "msg_001"
|
|
assert sub.plattform == "whatsapp"
|
|
assert sub.absender == "+491234567890"
|
|
assert sub.text == "Hallo, kennt jemand ein gutes Kartenspiele?"
|
|
assert sub.status == "neu"
|
|
assert isinstance(sub.zeitstempel, datetime)
|
|
|
|
|
|
def test_leerer_text_wirft_validation_error() -> None:
|
|
"""Leerer Text wirft ValidationError."""
|
|
with pytest.raises(ValidationError):
|
|
Submission(
|
|
message_id="msg_002",
|
|
plattform="telegram",
|
|
absender="chat_12345",
|
|
text="",
|
|
)
|
|
|
|
|
|
def test_text_ueber_5000_zeichen_wirft_validation_error() -> None:
|
|
"""Text > 5000 Zeichen wirft ValidationError."""
|
|
with pytest.raises(ValidationError):
|
|
Submission(
|
|
message_id="msg_003",
|
|
plattform="telegram",
|
|
absender="chat_12345",
|
|
text="a" * 5001,
|
|
)
|
|
|
|
|
|
def test_zeitstempel_wird_auto_gesetzt() -> None:
|
|
"""zeitstempel wird automatisch gesetzt (nicht None)."""
|
|
before = datetime.now()
|
|
sub = Submission(
|
|
message_id="msg_004",
|
|
plattform="whatsapp",
|
|
absender="+4999999999",
|
|
text="Test",
|
|
)
|
|
after = datetime.now()
|
|
assert sub.zeitstempel is not None
|
|
assert before <= sub.zeitstempel <= after
|