import os

from discord_embed.generate_html import generate_html_for_videos


def test_generate_html_for_videos():
    """Test generate_html_for_videos() works."""
    domain = os.environ["SERVE_DOMAIN"]

    # Remove trailing slash from domain
    if domain.endswith("/"):
        domain = domain[:-1]

    # Delete the old HTML file if it exists
    if os.path.exists(f"Uploads/test_video.mp4.html"):
        os.remove(f"Uploads/test_video.mp4.html")

    generated_html = generate_html_for_videos(
        url="https://www.youtube.com/watch?v=dQw4w9WgXcQ",
        width=1920,
        height=1080,
        screenshot="https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg",
        filename="test_video.mp4",
    )
    assert generated_html == f"{domain}/test_video.mp4"

    # Open the generated HTML and check if it contains the correct URL, width, height, and screenshot.

    with open("Uploads/test_video.mp4.html", "r") as generated_html_file:
        generated_html_lines = generated_html_file.readlines()
        """
        <!DOCTYPE html>
        <html>
        <!-- Generated at 2022-08-08 08:16:53 -->
        <head>
            <meta property="og:type" content="video.other">
            <meta property="twitter:player" content="https://www.youtube.com/watch?v=dQw4w9WgXcQ">
            <meta property="og:video:type" content="text/html">
            <meta property="og:video:width" content="1920">
            <meta property="og:video:height" content="1080">
            <meta name="twitter:image" content="https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg">
            <meta http-equiv="refresh" content="0;url=https://www.youtube.com/watch?v=dQw4w9WgXcQ">
        </head>
        </html>
        """

        for line, html in enumerate(generated_html_lines):
            # Strip spaces and newlines
            html = html.strip()

            # Check each line
            if line == 1:
                assert html == "<!DOCTYPE html>"
            elif line == 2:
                assert html == "<html>"
            elif line == 3:
                assert html.startswith("<!-- Generated at ")
            elif line == 4:
                assert html == '<head>'
            elif line == 5:
                assert html == '<meta property="og:type" content="video.other">'
            elif line == 6:
                assert html == '<meta property="twitter:player" content="https://www.youtube.com/watch?v=dQw4w9WgXcQ">'
            elif line == 7:
                assert html == '<meta property="og:video:type" content="text/html">'
            elif line == 8:
                assert html == '<meta property="og:video:width" content="1920">'
            elif line == 9:
                assert html == '<meta property="og:video:height" content="1080">'
            elif line == 10:
                assert html == '<meta name="twitter:image" content="https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg">'
            elif line == 11:
                assert html == '<meta http-equiv="refresh" content="0;url=https://www.youtube.com/watch?v=dQw4w9WgXcQ">'
            elif line == 12:
                assert html == "</head>"
            elif line == 13:
                assert html == "</html>"