46 lines
1.6 KiB
Python
46 lines
1.6 KiB
Python
import unittest
|
|
from types import SimpleNamespace
|
|
|
|
|
|
class ModelNormalizationTests(unittest.TestCase):
|
|
def test_catalog_song_from_song_info_builds_stable_platform_key(self):
|
|
from musicdl.catalogsync.models import CatalogSong, normalize_source_name
|
|
|
|
song_info = SimpleNamespace(
|
|
source="QQMusicClient",
|
|
identifier="000x564O1lrTDY",
|
|
song_name="摆脱地心引力",
|
|
singers="时代少年团",
|
|
album="摆脱地心引力",
|
|
ext="flac",
|
|
file_size_bytes=45381227,
|
|
file_size="43.29 MB",
|
|
raw_data={"quality": "lossless"},
|
|
)
|
|
|
|
normalized = CatalogSong.from_song_info(song_info)
|
|
|
|
self.assertEqual("qq", normalize_source_name(song_info.source))
|
|
self.assertEqual("qq", normalized.platform)
|
|
self.assertEqual("000x564O1lrTDY", normalized.remote_song_id)
|
|
self.assertEqual("qq:000x564O1lrTDY", normalized.song_key)
|
|
self.assertEqual("lossless", normalized.quality_label)
|
|
self.assertEqual(45381227, normalized.file_size_bytes)
|
|
|
|
def test_extract_artist_names_merges_raw_artists_and_display_text(self):
|
|
from musicdl.catalogsync.models import extract_artist_names
|
|
|
|
raw_data = {
|
|
"search": {
|
|
"singer": [{"name": "周杰伦"}, {"name": "方文山"}],
|
|
}
|
|
}
|
|
|
|
names = extract_artist_names(raw_data, "周杰伦 / 方文山, 林俊杰")
|
|
|
|
self.assertEqual(["周杰伦", "方文山", "林俊杰"], names)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|