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