test(reorganize): verify MusicBrainz integration

This commit is contained in:
ragnarlotus 2026-06-26 03:10:07 +02:00
parent 528aedbdfe
commit 8a6b02b3fd

View file

@ -7,7 +7,11 @@ canonical_source/canonical_album_id, and an explicit user source pick
from __future__ import annotations from __future__ import annotations
from unittest.mock import MagicMock
import core.library_reorganize as lr import core.library_reorganize as lr
import core.metadata.registry as metadata_registry
from core.musicbrainz_search import MusicBrainzSearchClient
def _patch_fetch(monkeypatch, tracklists): def _patch_fetch(monkeypatch, tracklists):
@ -76,24 +80,79 @@ def test_no_canonical_unchanged(monkeypatch):
def test_musicbrainz_release_id_is_used_by_priority_walk(monkeypatch): def test_musicbrainz_release_id_is_used_by_priority_walk(monkeypatch):
_patch_fetch(monkeypatch, { client = MusicBrainzSearchClient()
('musicbrainz', 'mb-release-1'): [{'name': 'x'}], client._client = MagicMock()
}) client._client.get_release_group.return_value = None
client._client.get_release.return_value = {
"id": "mb-release-1",
"title": "Test Album",
"date": "2024-01-01",
"artist-credit": [{"name": "Test Artist"}],
"release-group": {
"id": "mb-group-1",
"primary-type": "Album",
"secondary-types": [],
},
"media": [
{
"position": 1,
"tracks": [
{
"id": "track-1",
"number": "1",
"position": 1,
"length": 180000,
"recording": {
"id": "recording-1",
"title": "Test Track",
"artist-credit": [{"name": "Test Artist"}],
"length": 180000,
},
},
],
},
],
}
monkeypatch.setattr(
metadata_registry,
"get_musicbrainz_client",
lambda *args, **kwargs: client,
)
monkeypatch.setattr( monkeypatch.setattr(
lr, lr,
'get_source_priority', "get_source_priority",
lambda primary: ['musicbrainz', 'spotify'], lambda primary: ["musicbrainz", "spotify"],
) )
album_data = { album_data = {
'musicbrainz_release_id': 'mb-release-1', "musicbrainz_release_id": "mb-release-1",
} }
source, api_album, items = lr._resolve_source( source, api_album, items = lr._resolve_source(
album_data, album_data,
'musicbrainz', "musicbrainz",
) )
assert source == 'musicbrainz' assert source == "musicbrainz"
assert api_album == {'name': 'musicbrainz:mb-release-1'} assert api_album["id"] == "mb-release-1"
assert items == [{'name': 'x'}] assert api_album["name"] == "Test Album"
assert items == api_album["tracks"]
assert items == [
{
"id": "recording-1",
"name": "Test Track",
"artists": [{"name": "Test Artist"}],
"duration_ms": 180000,
"track_number": 1,
"disc_number": 1,
},
]
client._client.get_release_group.assert_any_call(
"mb-release-1",
includes=["releases", "artist-credits"],
)
client._client.get_release.assert_any_call(
"mb-release-1",
includes=["recordings", "artist-credits", "release-groups"],
)