75 lines
2.0 KiB
Python
75 lines
2.0 KiB
Python
import pytest
|
|
from pydantic import ValidationError
|
|
|
|
|
|
# ── Models ──────────────────────────────────────────────────────────────────
|
|
|
|
def test_parse_request_valid():
|
|
from models import ParseRequest
|
|
req = ParseRequest(query="Briefe von Opa", lang="de")
|
|
assert req.query == "Briefe von Opa"
|
|
assert req.lang == "de"
|
|
|
|
|
|
def test_parse_request_rejects_unknown_lang():
|
|
from models import ParseRequest
|
|
with pytest.raises(ValidationError):
|
|
ParseRequest(query="Letters from grandpa", lang="fr")
|
|
|
|
|
|
def test_parse_response_serializes_nulls():
|
|
from models import ParseResponse
|
|
resp = ParseResponse(
|
|
personNames=["Opa"],
|
|
personRole="sender",
|
|
dateFrom=None,
|
|
dateTo="1920-12-31",
|
|
keywords=["brief"],
|
|
rawQuery="Briefe von Opa",
|
|
)
|
|
data = resp.model_dump()
|
|
assert data["dateFrom"] is None
|
|
assert data["dateTo"] == "1920-12-31"
|
|
assert data["personRole"] == "sender"
|
|
|
|
|
|
# ── Model loading ────────────────────────────────────────────────────────────
|
|
|
|
@pytest.fixture(scope="session")
|
|
def nlp_de():
|
|
from extractor import get_nlp
|
|
return get_nlp("de")
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def nlp_en():
|
|
from extractor import get_nlp
|
|
return get_nlp("en")
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def nlp_es():
|
|
from extractor import get_nlp
|
|
return get_nlp("es")
|
|
|
|
|
|
def test_get_nlp_de_loads(nlp_de):
|
|
doc = nlp_de("Test")
|
|
assert doc is not None
|
|
|
|
|
|
def test_get_nlp_en_loads(nlp_en):
|
|
doc = nlp_en("Test")
|
|
assert doc is not None
|
|
|
|
|
|
def test_get_nlp_es_loads(nlp_es):
|
|
doc = nlp_es("Prueba")
|
|
assert doc is not None
|
|
|
|
|
|
def test_get_nlp_unknown_lang_raises():
|
|
from extractor import get_nlp
|
|
with pytest.raises(ValueError, match="Unsupported language"):
|
|
get_nlp("fr")
|