Ship name corpus lookup/spin, nickname suggestions, significance UX, site-ideas SMTP, and remove the Logo concepts page and assets.
44 lines
1.6 KiB
Python
44 lines
1.6 KiB
Python
"""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"] == "Зина"
|