Files
musicdl-catalog-sync-suite/catalog-sync/tests/catalogsync/test_models.py
T

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()