Add tests

This commit is contained in:
2022-04-20 20:36:39 +02:00
parent 1676186e2f
commit 070cd77bd2
2 changed files with 116 additions and 1 deletions

BIN
tests/test.mp4 Normal file

Binary file not shown.

View File

@ -1,4 +1,15 @@
import imghdr
import os
from discord_embed import __version__, settings
from discord_embed.generate_html import generate_html_for_videos
from discord_embed.main import app
from discord_embed.video import make_thumbnail, video_resolution
from discord_embed.webhook import send_webhook
from fastapi.testclient import TestClient
client = TestClient(app)
TEST_FILE = "tests/test.mp4"
def test_version():
@ -8,4 +19,108 @@ def test_version():
def test_domain_ends_with_slash():
"""Test that domain ends with slash."""
assert not settings.domain.endswith("/")
assert not settings.serve_domain.endswith("/")
def test_generate_html_for_videos():
"""Test that generate_html_for_videos() works."""
# TODO: We should probably import this from settings.py instead of
# hardcoding it here. If we change it in settings.py, it won't be
# changed here.
domain = os.environ["SERVE_DOMAIN"]
# Remove trailing slash from domain
if domain.endswith("/"):
domain = domain[:-1]
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"
def test_video_resolution():
"""Test that video_resolution() works."""
assert video_resolution(TEST_FILE) == (422, 422)
def test_make_thumbnail():
"""Test that make_thumbnail() works."""
# TODO: We should probably import this from settings.py instead of
# hardcoding it here. If we change it in settings.py, it won't be
# changed here.
domain = os.environ["SERVE_DOMAIN"]
# Remove trailing slash from domain
if domain.endswith("/"):
domain = domain[:-1]
thumbnail = make_thumbnail(TEST_FILE, "test.mp4")
# Check that thumbnail is a jpeg.
assert imghdr.what(f"{settings.upload_folder}/test.mp4.jpg") == "jpeg"
# Check that the it returns the correct URL.
assert thumbnail == f"{domain}/test.mp4.jpg"
def test_save_to_disk():
"""Test that save_to_disk() works."""
# TODO: Implement this test. I need to mock the UploadFile object.
def test_do_things():
"""Test that do_things() works."""
# TODO: Implement this test. I need to mock the UploadFile object.
def test_send_webhook():
"""Test that send_webhook() works."""
send_webhook("Running Pytest")
def test_main():
"""Test that main() works."""
data_without_trailing_nl = ""
response = client.get("/")
# Check if response is our HTML.
with open("templates/index.html", encoding="utf8") as our_html:
data = our_html.read()
# index.html has a trailing newline that we need to remove.
if data[-1:] == "\n":
data_without_trailing_nl = data[:-1]
assert response.status_code == 200
assert response.text == data_without_trailing_nl
def test_upload_file():
"""Test if we can upload files."""
# TODO: We should probably import this from settings.py instead of
# hardcoding it here. If we change it in settings.py, it won't be
# changed here.
domain = os.environ["SERVE_DOMAIN"]
# Remove trailing slash from domain
if domain.endswith("/"):
domain = domain[:-1]
# Upload our video file and check if it returns the html_url.
with open(TEST_FILE, "rb") as uploaded_file:
response = client.post(
url="/uploadfiles/",
files={"file": uploaded_file},
)
returned_json = response.json()
html_url = returned_json["html_url"]
assert response.status_code == 200
assert html_url == f"{domain}/test.mp4"