Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| import json | |
| from pathlib import Path | |
| import pytest | |
| from extraction.schemas import ( | |
| ExtractClaimsRequest, | |
| normalize_pubmed_language, | |
| ) | |
| ROOT = Path(__file__).resolve().parents[1] | |
| EXAMPLE = ( | |
| ROOT | |
| / "contracts" | |
| / "extract-claims.request.example.json" | |
| ) | |
| def test_normalize_pubmed_iso639_2( | |
| pubmed_code: str, | |
| expected: str, | |
| ) -> None: | |
| assert ( | |
| normalize_pubmed_language(pubmed_code) | |
| == expected | |
| ) | |
| def test_existing_iso639_1_is_preserved() -> None: | |
| assert normalize_pubmed_language("en") == "en" | |
| assert normalize_pubmed_language("fr") == "fr" | |
| assert normalize_pubmed_language("pt-BR") == "pt-BR" | |
| def test_extract_request_accepts_real_pubmed_eng() -> None: | |
| payload = json.loads( | |
| EXAMPLE.read_text(encoding="utf-8") | |
| ) | |
| payload["article"]["language"] = "eng" | |
| parsed = ExtractClaimsRequest.model_validate( | |
| payload | |
| ) | |
| assert parsed.article.language == "en" | |
| def test_unknown_three_letter_code_is_rejected() -> None: | |
| payload = json.loads( | |
| EXAMPLE.read_text(encoding="utf-8") | |
| ) | |
| payload["article"]["language"] = "xyz" | |
| with pytest.raises(Exception): | |
| ExtractClaimsRequest.model_validate(payload) | |