mirror of
				https://github.com/KevinMidboe/spotify-downloader.git
				synced 2025-10-29 18:00:15 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			73 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from spotdl.metadata import EmbedderBase
 | |
| 
 | |
| import pytest
 | |
| 
 | |
| class EmbedderKid(EmbedderBase):
 | |
|     def __init__(self):
 | |
|         super().__init__()
 | |
| 
 | |
| 
 | |
| class TestEmbedderBaseABC:
 | |
|     def test_error_base_class_embedderbase(self):
 | |
|         with pytest.raises(TypeError):
 | |
|             # This abstract base class must be inherited from
 | |
|             # for instantiation
 | |
|             EmbedderBase()
 | |
| 
 | |
|     def test_inherit_abstract_base_class_streamsbase(self):
 | |
|         EmbedderKid()
 | |
| 
 | |
| 
 | |
| class TestMethods:
 | |
|     @pytest.fixture(scope="module")
 | |
|     def embedderkid(self):
 | |
|         return EmbedderKid()
 | |
| 
 | |
|     def test_target_formats(self, embedderkid):
 | |
|         assert embedderkid.supported_formats == ()
 | |
| 
 | |
|     @pytest.mark.parametrize("path, expect_encoding", (
 | |
|         ("/a/b/c/file.mp3", "mp3"),
 | |
|         ("music/pop/1.wav", "wav"),
 | |
|         ("/a path/with spaces/track.m4a", "m4a"),
 | |
|     ))
 | |
|     def test_get_encoding(self, embedderkid, path, expect_encoding):
 | |
|         assert embedderkid.get_encoding(path) == expect_encoding
 | |
| 
 | |
|     def test_apply_metadata_with_explicit_encoding(self, embedderkid):
 | |
|         with pytest.raises(TypeError):
 | |
|             embedderkid.apply_metadata("/path/to/music.mp3", {}, cached_albumart="imagedata", encoding="mp3")
 | |
| 
 | |
|     def test_apply_metadata_with_implicit_encoding(self, embedderkid):
 | |
|         with pytest.raises(TypeError):
 | |
|             embedderkid.apply_metadata("/path/to/music.wav", {}, cached_albumart="imagedata")
 | |
| 
 | |
|     class MockHTTPResponse:
 | |
|         """
 | |
|         This mocks `urllib.request.urlopen` for custom response text.
 | |
|         """
 | |
|         response_file = ""
 | |
| 
 | |
|         def __init__(self, url):
 | |
|             pass
 | |
| 
 | |
|         def read(self):
 | |
|             pass
 | |
| 
 | |
|     def test_apply_metadata_without_cached_image(self, embedderkid, monkeypatch):
 | |
|         monkeypatch.setattr("urllib.request.urlopen", self.MockHTTPResponse)
 | |
|         metadata = {"album": {"images": [{"url": "http://animageurl.com"},]}}
 | |
|         with pytest.raises(TypeError):
 | |
|             embedderkid.apply_metadata("/path/to/music.wav", metadata, cached_albumart=None)
 | |
| 
 | |
|     @pytest.mark.parametrize("fmt_method_suffix", (
 | |
|         "as_mp3",
 | |
|         "as_m4a",
 | |
|         "as_flac",
 | |
|     ))
 | |
|     def test_embed_formats(self, fmt_method_suffix, embedderkid):
 | |
|         method = eval("embedderkid." + fmt_method_suffix)
 | |
|         with pytest.raises(NotImplementedError):
 | |
|             method("/a/random/path", {})
 | |
| 
 |