import tempfile
from pathlib import Path
from typing import TYPE_CHECKING

from reader import Feed, Reader, make_reader

from discord_rss_bot.search import create_html_for_search_results

if TYPE_CHECKING:
    from collections.abc import Iterable


def test_create_html_for_search_results() -> None:
    """Test create_html_for_search_results."""
    # Create a reader.
    with tempfile.TemporaryDirectory() as temp_dir:
        # Create the temp directory.
        Path.mkdir(Path(temp_dir), exist_ok=True)
        assert Path.exists(Path(temp_dir))

        # Create a temporary reader.
        reader: Reader = make_reader(url=str(Path(temp_dir, "test_db.sqlite")))
        assert reader is not None

        # Add a feed to the reader.
        reader.add_feed("https://lovinator.space/rss_test.xml", exist_ok=True)

        # Check that the feed was added.
        feeds: Iterable[Feed] = reader.get_feeds()
        assert feeds is not None
        assert len(list(feeds)) == 1

        # Update the feed to get the entries.
        reader.update_feeds()

        # Get the feed.
        feed: Feed = reader.get_feed("https://lovinator.space/rss_test.xml")
        assert feed is not None

        # Update the search index.
        reader.enable_search()
        reader.update_search()

        # Create the HTML and check if it is not empty.
        search_html: str = create_html_for_search_results("a", reader)
        assert search_html is not None
        assert len(search_html) > 10

        # Close the reader, so we can delete the directory.
        reader.close()