From 857a7364ddb9b10529593c5e9c3578eb95c1da9b Mon Sep 17 00:00:00 2001 From: salmonik Date: Sat, 18 Apr 2026 16:24:42 +0200 Subject: add a test suite Signed-off-by: salmonik --- tests/cogs/test_compression_conversion.py | 139 ++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 tests/cogs/test_compression_conversion.py (limited to 'tests/cogs/test_compression_conversion.py') diff --git a/tests/cogs/test_compression_conversion.py b/tests/cogs/test_compression_conversion.py new file mode 100644 index 0000000..f9f74ad --- /dev/null +++ b/tests/cogs/test_compression_conversion.py @@ -0,0 +1,139 @@ +import pytest +from unittest.mock import AsyncMock, patch, MagicMock +import os +import discord +from tests.conftest import MockApplicationContext + + +def test_compression_filetype_video(): + from cogs.compression import filetype + assert filetype("test.mp4") == "Video" + assert filetype("test.avi") == "Video" + + +def test_compression_filetype_audio(): + from cogs.compression import filetype + assert filetype("test.mp3") == "Audio" + assert filetype("test.wav") == "Audio" + + +def test_compression_filetype_image(): + from cogs.compression import filetype + assert filetype("test.jpg") == "Image" + assert filetype("test.png") == "Image" + + +def test_conversion_filetype(): + from cogs.conversion import filetype + assert filetype("test.mp4") == "Video" + assert filetype("test.mp3") == "Audio" + assert filetype("test.jpg") == "Image" + assert filetype("test.xyz") == "Unknown" + + +@pytest.mark.asyncio +async def test_build_conversion_command_video(): + with patch('os.getenv', return_value="https://example.com"): + with patch('cogs.utils.temp.get_temp_dir', return_value="/tmp"): + with patch('cogs.utils.settings.get_baseurl', return_value="https://example.com"): + import importlib + import cogs.conversion + importlib.reload(cogs.conversion) + from cogs.conversion import Conversion + + cog = Conversion.__new__(Conversion) + cog._baseurl = "https://example.com" + cog._uploadurl = "https://example.com" + + cmd = cog._build_conversion_command("Video", "/tmp/test.mp4", "/tmp/output.mp4", "") + assert cmd is not None + assert "ffmpeg" in cmd + + +@pytest.mark.asyncio +async def test_build_conversion_command_image(): + with patch('os.getenv', return_value="https://example.com"): + with patch('cogs.utils.temp.get_temp_dir', return_value="/tmp"): + with patch('cogs.utils.settings.get_baseurl', return_value="https://example.com"): + import importlib + import cogs.conversion + importlib.reload(cogs.conversion) + from cogs.conversion import Conversion + + cog = Conversion.__new__(Conversion) + cog._baseurl = "https://example.com" + cog._uploadurl = "https://example.com" + + cmd = cog._build_conversion_command("Image", "/tmp/test.jpg", "/tmp/output.png", "") + assert cmd is not None + assert "magick" in cmd + + +@pytest.mark.asyncio +async def test_build_conversion_command_unknown(): + with patch('os.getenv', return_value="https://example.com"): + with patch('cogs.utils.temp.get_temp_dir', return_value="/tmp"): + with patch('cogs.utils.settings.get_baseurl', return_value="https://example.com"): + import importlib + import cogs.conversion + importlib.reload(cogs.conversion) + from cogs.conversion import Conversion + + cog = Conversion.__new__(Conversion) + cog._baseurl = "https://example.com" + cog._uploadurl = "https://example.com" + + cmd = cog._build_conversion_command("Unknown", "/tmp/test.xyz", "/tmp/output.abc", "") + assert cmd is None + + +@pytest.mark.asyncio +async def test_compression_get_command_video(): + with patch('os.getenv', return_value="https://example.com"): + with patch('cogs.utils.temp.get_temp_dir', return_value="/tmp"): + with patch('cogs.utils.settings.get_baseurl', return_value="https://example.com"): + import importlib + import cogs.compression + importlib.reload(cogs.compression) + from cogs.compression import Compression + + cog = Compression.__new__(Compression) + cog.temp_dir = "/tmp" + + cmd = cog._get_compression_command("Video", "/tmp/test.mp4", "/tmp/output.mp4") + assert cmd is not None + assert "ffmpeg" in cmd + + +@pytest.mark.asyncio +async def test_compression_get_command_image(): + with patch('os.getenv', return_value="https://example.com"): + with patch('cogs.utils.temp.get_temp_dir', return_value="/tmp"): + with patch('cogs.utils.settings.get_baseurl', return_value="https://example.com"): + import importlib + import cogs.compression + importlib.reload(cogs.compression) + from cogs.compression import Compression + + cog = Compression.__new__(Compression) + cog.temp_dir = "/tmp" + + cmd = cog._get_compression_command("Image", "/tmp/test.jpg", "/tmp/output.jpg") + assert cmd is not None + + +@pytest.mark.asyncio +async def test_compression_get_command_unknown(): + with patch('os.getenv', return_value="https://example.com"): + with patch('cogs.utils.temp.get_temp_dir', return_value="/tmp"): + with patch('cogs.utils.settings.get_baseurl', return_value="https://example.com"): + import importlib + import cogs.compression + importlib.reload(cogs.compression) + from cogs.compression import Compression + + cog = Compression.__new__(Compression) + cog.temp_dir = "/tmp" + + cmd = cog._get_compression_command("Unknown", "/tmp/test.xyz", "/tmp/output.xyz") + assert cmd is None \ No newline at end of file -- cgit v1.2.3