Register MusicBrainz as a first-class metadata source alongside Deezer, iTunes, Spotify, Discogs, and Hydrabase. Expose the shared client through metadata services, add the settings option, and expand the MusicBrainz search adapter with source-compatible artist, album, track, and detail methods. Carry MusicBrainz IDs through similar-artist discovery, recommended artists, artist map serialization, and personalized playlist selection. Update DB migrations and lookup filters so similar_artist_musicbrainz_id is preserved on older schemas and used for source requirements and library exclusion. Normalize MusicBrainz album adapter output for import context and add regression coverage for registry mapping, typed album conversion, and similar-artist filtering. Verified by user with 120 focused tests passing.
36 lines
1.3 KiB
Python
36 lines
1.3 KiB
Python
import sys
|
|
from pathlib import Path
|
|
|
|
sys.path.insert(0, str(Path(__file__).resolve().parents[2]))
|
|
|
|
from core.metadata import registry
|
|
|
|
|
|
def test_spotify_disconnect_source_uses_deezer_when_spotify_is_primary():
|
|
assert registry.get_spotify_disconnect_source("spotify") == "deezer"
|
|
|
|
|
|
def test_spotify_disconnect_source_keeps_non_spotify_primary():
|
|
assert registry.get_spotify_disconnect_source("discogs") == "discogs"
|
|
|
|
|
|
def test_metadata_source_label_maps_known_sources():
|
|
assert registry.get_metadata_source_label("spotify") == "Spotify"
|
|
assert registry.get_metadata_source_label("itunes") == "iTunes"
|
|
assert registry.get_metadata_source_label("deezer") == "Deezer"
|
|
assert registry.get_metadata_source_label("discogs") == "Discogs"
|
|
assert registry.get_metadata_source_label("hydrabase") == "Hydrabase"
|
|
assert registry.get_metadata_source_label("musicbrainz") == "MusicBrainz"
|
|
|
|
|
|
def test_musicbrainz_is_first_class_metadata_client():
|
|
registry.clear_cached_metadata_clients()
|
|
client = object()
|
|
assert registry.get_client_for_source(
|
|
"musicbrainz",
|
|
musicbrainz_client_factory=lambda: client,
|
|
) is client
|
|
|
|
|
|
def test_metadata_source_label_falls_back_to_unmapped():
|
|
assert registry.get_metadata_source_label("apple_music") == "Unmapped"
|