soulsync/tests/metadata/test_metadata_registry.py
Broque Thomas 5bc5fbb662 Add MusicBrainz as a metadata source
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.
2026-05-18 18:47:13 -07:00

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"