"""Tests para html_to_markdown."""

import sys
import os

sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))

from core.html_to_markdown import html_to_markdown, _preprocess_html


def test_html_con_nav_y_footer_filtra_boilerplate():
    """HTML con nav/footer: el contenido principal debe extraerse (nav no aparece en output)."""
    html = """
    <html>
      <body>
        <nav><a href="/">Home</a><a href="/about">About</a></nav>
        <main>
          <h1>Titulo principal</h1>
          <p>Este es el contenido relevante del articulo.</p>
        </main>
        <footer><p>Copyright 2026</p></footer>
      </body>
    </html>
    """
    result = html_to_markdown(html)
    assert "Titulo principal" in result
    assert "contenido relevante" in result


def test_html_limpio_se_convierte_correctamente():
    """HTML limpio sin boilerplate: headings y parrafos se convierten correctamente."""
    html = """
    <html>
      <body>
        <h1>Hello World</h1>
        <p>Parrafo de prueba con <strong>texto en negrita</strong>.</p>
        <h2>Seccion dos</h2>
        <p>Mas contenido aqui.</p>
      </body>
    </html>
    """
    result = html_to_markdown(html)
    assert "Hello World" in result
    assert "Parrafo de prueba" in result
    assert "Seccion dos" in result


def test_html_con_imagenes_lazy_loaded():
    """HTML con imagenes lazy-loaded: data-src debe reemplazar src en el output."""
    html = """
    <html>
      <body>
        <p>Articulo con imagen</p>
        <img src="placeholder.gif" data-src="imagen-real.jpg" alt="foto real" />
      </body>
    </html>
    """
    # Verificar preprocesamiento
    preprocessed = _preprocess_html(html)
    assert "imagen-real.jpg" in preprocessed
    # El resultado final debe contener la URL real
    result = html_to_markdown(html)
    assert "imagen-real.jpg" in result


def test_preprocess_lazy_loading_reemplaza_src():
    """_preprocess_html reemplaza src con data-src en imagenes."""
    html = '<img src="placeholder.gif" data-src="real.jpg" alt="x" />'
    result = _preprocess_html(html)
    assert 'src="real.jpg"' in result


def test_preprocess_lazy_loading_sin_src_anade_src():
    """_preprocess_html agrega src cuando la imagen no tiene atributo src."""
    html = '<img data-src="real.jpg" alt="foto" />'
    result = _preprocess_html(html)
    assert 'src="real.jpg"' in result


def test_html_vacio_retorna_string():
    """HTML vacio no lanza excepcion."""
    result = html_to_markdown("")
    assert isinstance(result, str)


def test_html_solo_texto():
    """HTML con solo texto plano se convierte sin error."""
    html = "<p>Solo texto</p>"
    result = html_to_markdown(html)
    assert "Solo texto" in result
