audio streaming app plyr.fm
38
fork

Configure Feed

Select the types of activity you want to include in your feed.

at 2026.0105.175700 80 lines 2.6 kB view raw
1"""tests for audio format validation.""" 2 3import pytest 4 5from backend._internal.audio import AudioFormat 6 7 8class TestAudioFormat: 9 """test AudioFormat enum functionality.""" 10 11 @pytest.mark.parametrize( 12 ("extension", "expected_format"), 13 [ 14 # mp3 15 (".mp3", AudioFormat.MP3), 16 ("mp3", AudioFormat.MP3), 17 (".MP3", AudioFormat.MP3), 18 # wav 19 (".wav", AudioFormat.WAV), 20 ("wav", AudioFormat.WAV), 21 (".WAV", AudioFormat.WAV), 22 # m4a 23 (".m4a", AudioFormat.M4A), 24 ("m4a", AudioFormat.M4A), 25 (".M4A", AudioFormat.M4A), 26 ], 27 ) 28 def test_from_extension_supported( 29 self, extension: str, expected_format: AudioFormat 30 ): 31 """test supported extension recognition (case-insensitive, with/without dot).""" 32 assert AudioFormat.from_extension(extension) == expected_format 33 34 @pytest.mark.parametrize( 35 "extension", 36 [ 37 ".flac", 38 ".ogg", 39 ".aac", 40 ".wma", 41 ".aiff", 42 ".aif", 43 "", 44 "invalid", 45 ], 46 ) 47 def test_from_extension_unsupported(self, extension: str): 48 """test unsupported extensions return None.""" 49 assert AudioFormat.from_extension(extension) is None 50 51 def test_media_types(self): 52 """test media type mappings.""" 53 assert AudioFormat.MP3.media_type == "audio/mpeg" 54 assert AudioFormat.WAV.media_type == "audio/wav" 55 assert AudioFormat.M4A.media_type == "audio/mp4" 56 57 def test_extensions_with_dots(self): 58 """test extension property includes dots.""" 59 assert AudioFormat.MP3.extension == ".mp3" 60 assert AudioFormat.WAV.extension == ".wav" 61 assert AudioFormat.M4A.extension == ".m4a" 62 63 def test_all_extensions(self): 64 """test all_extensions returns complete list.""" 65 extensions = AudioFormat.all_extensions() 66 assert ".mp3" in extensions 67 assert ".wav" in extensions 68 assert ".m4a" in extensions 69 assert ".aiff" not in extensions 70 assert ".aif" not in extensions 71 assert len(extensions) == 3 72 73 def test_supported_extensions_str(self): 74 """test formatted string of supported extensions.""" 75 ext_str = AudioFormat.supported_extensions_str() 76 assert ".mp3" in ext_str 77 assert ".wav" in ext_str 78 assert ".m4a" in ext_str 79 # AIFF removed due to browser compatibility issues (see PR #152) 80 assert ".aiff" not in ext_str