from email_enrichment.candidates import generate
from email_enrichment.naming import parse_name


def test_generate_basic():
    out = generate(
        parse_name("Jon Mitchell"),
        "dasaninc.com",
        ["{first}.{last}", "{f}{last}", "{first}"],
    )
    assert out == [
        "jon.mitchell@dasaninc.com",
        "jmitchell@dasaninc.com",
        "jon@dasaninc.com",
    ]


def test_generate_dedupes():
    out = generate(
        parse_name("Jon Mitchell"),
        "example.com",
        ["{first}", "{first}", "{first}"],
    )
    assert out == ["jon@example.com"]


def test_generate_skips_unfillable_patterns():
    # First-name-only contact — patterns needing last should be skipped.
    out = generate(
        parse_name("Cher"),
        "example.com",
        ["{first}.{last}", "{first}", "{f}{last}"],
    )
    assert out == ["cher@example.com"]


def test_generate_handles_accents_and_hyphens():
    out = generate(
        parse_name("Jean-Pierre Émile"),
        "example.com",
        ["{first}.{last}"],
    )
    assert out == ["jeanpierre.emile@example.com"]
