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")