"""Tests for name origin/meaning autofill.""" from __future__ import annotations from stork.name_meta import lookup_name_meta, merge_locales_with_meta def test_curated_meta() -> None: meta = lookup_name_meta("Rivka") assert meta["source"] == "curated" assert meta["known"] is True assert "bind" in meta["meaning"].casefold() or "join" in meta["meaning"].casefold() assert meta["locales"]["en"]["origin"] == "Hebrew" assert meta["locales"]["ru"]["origin"] == "иврит" assert meta["locales"]["he"]["pronunciation"] == "רבקה" assert "Riki" in meta["nicknames"] def test_merge_does_not_overwrite_user() -> None: merged = merge_locales_with_meta( "Noah", {"en": {"pronunciation": "", "origin": "Custom", "meaning": ""}}, ) assert merged["en"]["origin"] == "Custom" assert merged["en"]["meaning"] # filled from curated assert merged["en"]["pronunciation"] == "Noah" def test_slash_spelling_ettel() -> None: meta = lookup_name_meta("Ettel / Etel") assert meta["source"] == "curated" assert "Yiddish" in meta["origin"] or "Ashkenazi" in meta["origin"] assert meta["locales"]["he"]["pronunciation"] assert meta["form_ru"] def test_zina_cluster() -> None: zina = lookup_name_meta("Zina") zena = lookup_name_meta("Zena") assert zina["source"] == "curated" assert "Zinaida" in zina["meaning"] or "Zeus" in zina["meaning"] assert "Arabic" in zina["origin"] or "زينة" in zina["meaning"] or "ornament" in zina["meaning"].casefold() assert zena["locales"]["ru"]["pronunciation"] == "Зина"