diff --git a/test/plugins/factories/musicbrainz.py b/test/plugins/factories/musicbrainz.py index 79ee26f78..36549d953 100644 --- a/test/plugins/factories/musicbrainz.py +++ b/test/plugins/factories/musicbrainz.py @@ -15,6 +15,16 @@ class _PeriodFactory(factory.DictFactory): ended = factory.LazyAttribute(lambda obj: obj.end is not None) +class _IdFactory(factory.DictFactory): + class Params: + id_base = 0 + index = 1 + + id = factory.LazyAttribute( + lambda o: f"00000000-0000-0000-0000-{o.id_base + o.index:012d}" + ) + + class AliasFactory(_SortNameFactory, _PeriodFactory): class Params: suffix = "" @@ -23,19 +33,25 @@ class AliasFactory(_SortNameFactory, _PeriodFactory): name = factory.LazyAttribute(lambda o: f"Alias {o.suffix}") primary = False type = "Artist name" - type_id = "894afba6-2816-3c24-8072-eadb66bd04bc" + type_id = factory.LazyAttribute( + lambda o: { + "Artist name": "894afba6-2816-3c24-8072-eadb66bd04bc", + "Label name": "3a1a0c48-d885-3b89-87b2-9e8a483c5675", + "Legal name": "d4dcd0c0-b341-3612-a332-c0ce797b25cf", + "Recording name": "5d564c8f-97de-3572-94bb-7f40ad661499", + "Release group name": "156e24ca-8746-3cfc-99ae-0a867c765c67", + "Release name": "df187855-059b-3514-9d5e-d240de0b4228", + "Search hint": "abc2db8a-7386-354d-82f4-252c0213cbe4", + }[o.type] + ) -class ArtistFactory(_SortNameFactory): +class ArtistFactory(_SortNameFactory, _IdFactory): class Params: id_base = 0 - index = 1 country: str | None = None disambiguation = "" - id = factory.LazyAttribute( - lambda o: f"00000000-0000-0000-0000-{o.id_base + o.index:012d}" - ) name = "Artist" type = "Person" type_id = "b6e035f4-3ce9-331c-97df-83397230b0df" @@ -78,3 +94,24 @@ class AreaFactory(factory.DictFactory): class ReleaseEventFactory(factory.DictFactory): area = factory.SubFactory(AreaFactory) date = factory.Faker("date") + + +class ReleaseGroupFactory(_IdFactory): + class Params: + id_base = 100 + + aliases = factory.List( + [factory.SubFactory(AliasFactory, type="Release group name")] + ) + artist_credit = factory.List([factory.SubFactory(ArtistCreditFactory)]) + disambiguation = factory.LazyAttribute( + lambda o: f"{o.title} Disambiguation" + ) + first_release_date = factory.Faker("date") + genres = factory.List([]) + primary_type = "Album" + primary_type_id = "f529b476-6e62-324f-b0aa-1f3e33d313fc" + secondary_type_ids = factory.List([]) + secondary_types = factory.List([]) + tags = factory.List([]) + title = "Release Group" diff --git a/test/plugins/test_musicbrainz.py b/test/plugins/test_musicbrainz.py index e002f141a..529f2d4b3 100644 --- a/test/plugins/test_musicbrainz.py +++ b/test/plugins/test_musicbrainz.py @@ -56,6 +56,10 @@ def release_event_factory(**kwargs) -> mb.ReleaseEvent: return factories.ReleaseEventFactory.build(**kwargs) +def release_group_factory(**kwargs) -> mb.ReleaseGroup: + return factories.ReleaseGroupFactory.build(**kwargs) + + class MusicBrainzTestCase(BeetsTestCase): def setUp(self): super().setUp() @@ -77,12 +81,7 @@ class MusicBrainzTestCase(BeetsTestCase): "id": "ALBUM ID", "asin": "ALBUM ASIN", "disambiguation": "R_DISAMBIGUATION", - "release_group": { - "primary_type": "Album", - "first_release_date": date, - "id": "RELEASE GROUP ID", - "disambiguation": "RG_DISAMBIGUATION", - }, + "release_group": release_group_factory(first_release_date=date), "artist_credit": [artist_credit_factory(artist__id_base=10)], "date": "3001", "media": [], @@ -354,7 +353,7 @@ class MBAlbumInfoTest(MusicBrainzTestCase): def test_parse_releasegroupid(self): release = self._make_release() d = self.mb.album_info(release) - assert d.releasegroup_id == "RELEASE GROUP ID" + assert d.releasegroup_id == "00000000-0000-0000-0000-000000000101" def test_parse_asin(self): release = self._make_release() @@ -400,7 +399,7 @@ class MBAlbumInfoTest(MusicBrainzTestCase): release = self._make_release() d = self.mb.album_info(release) assert d.albumdisambig == "R_DISAMBIGUATION" - assert d.releasegroupdisambig == "RG_DISAMBIGUATION" + assert d.releasegroupdisambig == "Release Group Disambiguation" def test_parse_disctitle(self): recordings = [ @@ -805,9 +804,7 @@ class MBLibraryTest(MusicBrainzTestCase): } ], "artist_credit": [artist_credit_factory()], - "release_group": { - "id": "another-id", - }, + "release_group": release_group_factory(), "release_relations": [ { "type": "transl-tracklisting", @@ -838,9 +835,7 @@ class MBLibraryTest(MusicBrainzTestCase): } ], "artist_credit": [artist_credit_factory()], - "release_group": { - "id": "another-id", - }, + "release_group": release_group_factory(), "country": "COUNTRY", }, ] @@ -874,9 +869,7 @@ class MBLibraryTest(MusicBrainzTestCase): } ], "artist_credit": [artist_credit_factory()], - "release_group": { - "id": "another-id", - }, + "release_group": release_group_factory(), } ] @@ -909,9 +902,7 @@ class MBLibraryTest(MusicBrainzTestCase): } ], "artist_credit": [artist_credit_factory()], - "release_group": { - "id": "another-id", - }, + "release_group": release_group_factory(), } ] @@ -944,9 +935,7 @@ class MBLibraryTest(MusicBrainzTestCase): } ], "artist_credit": [artist_credit_factory()], - "release_group": { - "id": "another-id", - }, + "release_group": release_group_factory(), "release_relations": [ { "type": "remaster", @@ -1051,7 +1040,7 @@ class TestMusicBrainzPlugin(PluginMixin): } ], "artist_credit": [artist_credit_factory()], - "release_group": {"id": "another-id"}, + "release_group": release_group_factory(), }, ) candidates = list(mb.candidates([], "hello", "there", False))