"""Tests para contact_import_key."""

from contact_import_key import contact_import_key


def test_determinismo_misma_entrada_misma_clave():
    a = contact_import_key("Ada Lovelace", ["+34600112233"], ["ada@example.com"])
    b = contact_import_key("Ada Lovelace", ["+34600112233"], ["ada@example.com"])
    assert a == b


def test_estabilidad_ante_formato_y_nombre_distinto():
    # Mismo telefono normalizado (ultimos 9 digitos), distinto formato y nombre.
    # El telefono manda -> misma clave.
    con_formato = contact_import_key("Bob", ["+34 600 11 22 33"])
    sin_formato = contact_import_key("BOB DISTINTO", ["600112233"])
    assert con_formato == sin_formato


def test_fallback_a_email_cuando_no_hay_telefono():
    solo_email = contact_import_key("Carol", [], ["CAROL@Example.com"])
    mismo_email_otro_nombre = contact_import_key("nombre cambiado", [], ["carol@example.com"])
    assert solo_email == mismo_email_otro_nombre
    # Y distinto de la clave por nombre puro (prefijo de identity distinto).
    por_nombre = contact_import_key("Carol")
    assert solo_email != por_nombre


def test_fallback_a_nombre_insensible_a_acentos_y_mayusculas():
    con_acentos = contact_import_key("José Pérez")
    sin_acentos = contact_import_key("jose perez")
    assert con_acentos == sin_acentos


def test_prefijo_v1_y_longitud():
    k = contact_import_key("Dave", ["600999888"])
    assert k.startswith("v1-")
    assert len(k) == 19  # 3 ("v1-") + 16 hex chars
