From 4a2412eef7ba8886c8a53baba950d2ee91df47ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Deluan=20Quint=C3=A3o?= Date: Thu, 22 May 2025 16:41:08 -0400 Subject: [PATCH] test: add PERFORMER tests (#4105) * Add performer participant tests with MBIDs * test: add handling for mismatched performer names and MBIDs in participant tests Signed-off-by: Deluan --------- Signed-off-by: Deluan --- model/metadata/map_participants_test.go | 53 ++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/model/metadata/map_participants_test.go b/model/metadata/map_participants_test.go index 5317a4bcf..71cb9c1f2 100644 --- a/model/metadata/map_participants_test.go +++ b/model/metadata/map_participants_test.go @@ -564,6 +564,58 @@ var _ = Describe("Participants", func() { )) }) }) + + When("MUSICBRAINZ_PERFORMERID tag is set", func() { + matchPerformer := func(name, orderName, subRole, mbid string) types.GomegaMatcher { + return MatchFields(IgnoreExtras, Fields{ + "Artist": MatchFields(IgnoreExtras, Fields{ + "Name": Equal(name), + "OrderArtistName": Equal(orderName), + "MbzArtistID": Equal(mbid), + }), + "SubRole": Equal(subRole), + }) + } + + It("should map MBIDs to the correct performer", func() { + mf = toMediaFile(model.RawTags{ + "PERFORMER:GUITAR": {"Eric Clapton", "B.B. King"}, + "PERFORMER:BASS": {"Nathan East"}, + "MUSICBRAINZ_PERFORMERID:GUITAR": {"mbid1", "mbid2"}, + "MUSICBRAINZ_PERFORMERID:BASS": {"mbid3"}, + }) + + participants := mf.Participants + Expect(participants).To(HaveKeyWithValue(model.RolePerformer, HaveLen(3))) + + p := participants[model.RolePerformer] + Expect(p).To(ContainElements( + matchPerformer("Eric Clapton", "eric clapton", "Guitar", "mbid1"), + matchPerformer("B.B. King", "b.b. king", "Guitar", "mbid2"), + matchPerformer("Nathan East", "nathan east", "Bass", "mbid3"), + )) + }) + + It("should handle mismatched performer names and MBIDs for sub-roles", func() { + mf = toMediaFile(model.RawTags{ + "PERFORMER:VOCALS": {"Singer A", "Singer B", "Singer C"}, + "MUSICBRAINZ_PERFORMERID:VOCALS": {"mbid_vocals_a", "mbid_vocals_b"}, // Fewer MBIDs + "PERFORMER:DRUMS": {"Drummer X"}, + "MUSICBRAINZ_PERFORMERID:DRUMS": {"mbid_drums_x", "mbid_drums_y"}, // More MBIDs + }) + + participants := mf.Participants + Expect(participants).To(HaveKeyWithValue(model.RolePerformer, HaveLen(4))) // 3 vocalists + 1 drummer + + p := participants[model.RolePerformer] + Expect(p).To(ContainElements( + matchPerformer("Singer A", "singer a", "Vocals", "mbid_vocals_a"), + matchPerformer("Singer B", "singer b", "Vocals", "mbid_vocals_b"), + matchPerformer("Singer C", "singer c", "Vocals", ""), + matchPerformer("Drummer X", "drummer x", "Drums", "mbid_drums_x"), + )) + }) + }) }) Describe("Other tags", func() { @@ -592,7 +644,6 @@ var _ = Describe("Participants", func() { Entry("REMIXER", model.RoleRemixer, "REMIXER"), Entry("DJMIXER", model.RoleDJMixer, "DJMIXER"), Entry("DIRECTOR", model.RoleDirector, "DIRECTOR"), - // TODO PERFORMER ) })