import tempfile import unittest from pathlib import Path from zyrarbot.storage.adapters.filesystem.uploads import UploadsRepository from zyrarbot.ui.bot.cogs.playback_cog import upload_choices class UploadsRepositoryTest(unittest.TestCase): def test_upload_autocomplete_ignores_empty_names_and_limits_labels(self): choices = upload_choices(["", " ", "song.mp3", "x" * 120]) self.assertEqual([choice.value for choice in choices], ["song.mp3", "x" * 120]) self.assertEqual(len(choices[1].name), 100) def test_only_audio_and_video_extensions_are_supported(self): self.assertTrue(UploadsRepository.is_supported_filename("song.MP3")) self.assertTrue(UploadsRepository.is_supported_filename("video.webm")) self.assertFalse(UploadsRepository.is_supported_filename("program.exe")) self.assertFalse(UploadsRepository.is_supported_filename("document.pdf")) def test_legacy_root_files_are_assigned_to_first_guild(self): with tempfile.TemporaryDirectory() as directory: root = Path(directory) (root / "legacy.mp3").write_bytes(b"audio") repository = UploadsRepository(str(root)) repository.migrate_legacy(10) self.assertEqual([item.filename for item in repository.list(10)], ["legacy.mp3"]) self.assertFalse((root / "legacy.mp3").exists()) self.assertEqual(repository.list(20), []) if __name__ == "__main__": unittest.main()