Use ReleaseGroupFactory

This commit is contained in:
Šarūnas Nejus 2026-01-27 01:54:13 +00:00
parent 3318b539a8
commit 4096ca6084
No known key found for this signature in database
2 changed files with 56 additions and 30 deletions

View file

@ -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"

View file

@ -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))