Spaces:
Sleeping
Sleeping
File size: 1,686 Bytes
71ab242 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | 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"
)
@pytest.mark.parametrize(
("pubmed_code", "expected"),
[
("eng", "en"),
("fre", "fr"),
("fra", "fr"),
("ger", "de"),
("deu", "de"),
("spa", "es"),
("ita", "it"),
("por", "pt"),
("dut", "nl"),
("nld", "nl"),
("chi", "zh"),
("zho", "zh"),
("jpn", "ja"),
("ara", "ar"),
("rus", "ru"),
],
)
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)
|