From 8a6b02b3fdeeefaad2b665479d2571e0bcabe0da Mon Sep 17 00:00:00 2001 From: ragnarlotus Date: Fri, 26 Jun 2026 03:10:07 +0200 Subject: [PATCH] test(reorganize): verify MusicBrainz integration --- tests/test_reorganize_canonical_source.py | 79 ++++++++++++++++++++--- 1 file changed, 69 insertions(+), 10 deletions(-) diff --git a/tests/test_reorganize_canonical_source.py b/tests/test_reorganize_canonical_source.py index bb39c436..f7a2939b 100644 --- a/tests/test_reorganize_canonical_source.py +++ b/tests/test_reorganize_canonical_source.py @@ -7,7 +7,11 @@ canonical_source/canonical_album_id, and an explicit user source pick from __future__ import annotations +from unittest.mock import MagicMock + import core.library_reorganize as lr +import core.metadata.registry as metadata_registry +from core.musicbrainz_search import MusicBrainzSearchClient 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): - _patch_fetch(monkeypatch, { - ('musicbrainz', 'mb-release-1'): [{'name': 'x'}], - }) + client = MusicBrainzSearchClient() + 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( lr, - 'get_source_priority', - lambda primary: ['musicbrainz', 'spotify'], + "get_source_priority", + lambda primary: ["musicbrainz", "spotify"], ) album_data = { - 'musicbrainz_release_id': 'mb-release-1', + "musicbrainz_release_id": "mb-release-1", } source, api_album, items = lr._resolve_source( album_data, - 'musicbrainz', + "musicbrainz", ) - assert source == 'musicbrainz' - assert api_album == {'name': 'musicbrainz:mb-release-1'} - assert items == [{'name': 'x'}] + assert source == "musicbrainz" + assert api_album["id"] == "mb-release-1" + 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"], + )