From 60abe03885700c41a80efbb4bb73d0798f3d2e99 Mon Sep 17 00:00:00 2001 From: Hazel Noack Date: Tue, 7 Oct 2025 14:26:08 +0200 Subject: [PATCH] artist tests --- internal/data/song_test.go | 80 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/internal/data/song_test.go b/internal/data/song_test.go index 230edb3..af3dd8b 100644 --- a/internal/data/song_test.go +++ b/internal/data/song_test.go @@ -102,3 +102,83 @@ func TestAlbumUnify(t *testing.T) { t.Errorf(`the song name doesn't get compiled properly`) } } + +func TestArtistDeduplicate(t *testing.T) { + artist := Artist{ + Name: "main_artist", + Albums: []Album{ + {Name: "concept_album"}, + { + Name: "concept_album", + Artists: []Artist{ + { + Name: "main_artist", + Albums: []Album{ + {Name: "concept_album", Songs: []Song{{Name: "song_x"}, {Name: "song_x"}}}, + {Name: "other_album"}, + }, + }, + {Name: "featured_artist"}, + {Name: "featured_artist"}, + }, + Songs: []Song{ + { + Name: "complex_song", + Artists: []Artist{ + {Name: "main_artist"}, + {Name: "featured_artist"}, + {Name: "main_artist"}, + }, + }, + }, + }, + }, + } + + compiled := artist.Compile().(Artist) + + if len(compiled.Albums) != 1 { + t.Errorf("should deduplicate album artists, got %d", len(compiled.Albums[0].Artists)) + } + + if len(compiled.Albums[0].Artists) != 2 { + t.Errorf("should deduplicate album artists, got %d", len(compiled.Albums[0].Artists)) + } + + if len(compiled.Albums[0].Artists[0].Albums) != 2 { + t.Errorf("should deduplicate nested albums, got %d", len(compiled.Albums[0].Artists[0].Albums)) + } + + if len(compiled.Albums[0].Songs[0].Artists) != 2 { + t.Errorf("should deduplicate song artists, got %d", len(compiled.Albums[0].Songs[0].Artists)) + } +} + +func TestArtistUnify(t *testing.T) { + artist := Artist{ + Name: " The BEATLES ", + Albums: []Album{ + { + Name: " Abbey Road ", + Songs: []Song{ + {Name: "Come Together "}, + {Name: "Something"}, + }, + }, + }, + } + + compiled := artist.Compile().(Artist) + + if compiled.UnifiedName != "the beatles" { + t.Errorf("artist name not unified properly, got: %s", compiled.UnifiedName) + } + + if compiled.Albums[0].UnifiedName != "abbey road" { + t.Errorf("album name in artist not unified properly, got: %s", compiled.Albums[0].UnifiedName) + } + + if compiled.Albums[0].Songs[0].UnifiedName != "come together" { + t.Errorf("song name in artist album not unified properly, got: %s", compiled.Albums[0].Songs[0].UnifiedName) + } +}