import pytest
from aiva.email.domain_extractor import extract_domain


def test_extract_domain_valid_email():
    assert extract_domain("test@example.com") == "example.com"


def test_extract_domain_subdomain():
    assert extract_domain("test@sub.example.com") == "sub.example.com"


def test_extract_domain_with_plus():
    assert extract_domain("test+alias@example.com") == "example.com"


def test_extract_domain_with_numbers():
    assert extract_domain("test123@example123.com") == "example123.com"


def test_extract_domain_with_hyphens():
    assert extract_domain("test-alias@example-domain.com") == "example-domain.com"


def test_extract_domain_empty_email():
    with pytest.raises(ValueError):
        extract_domain("")


def test_extract_domain_invalid_email_no_at():
    with pytest.raises(ValueError):
        extract_domain("testexample.com")


def test_extract_domain_invalid_email_no_domain():
    with pytest.raises(ValueError):
        extract_domain("test@")


def test_extract_domain_invalid_email_multiple_ats():
    with pytest.raises(ValueError):
        extract_domain("test@@example.com")


def test_extract_domain_invalid_email_no_local_part():
    with pytest.raises(ValueError):
        extract_domain("@example.com")
