diff --git a/internal/data/song_test.go b/internal/data/song_test.go index fb4b7bf..edb396c 100644 --- a/internal/data/song_test.go +++ b/internal/data/song_test.go @@ -4,7 +4,7 @@ import ( "testing" ) -func TestSong(t *testing.T) { +func TestSongDeduplicate(t *testing.T) { song := Song{ Name: "song_a", Album: Album{ @@ -16,8 +16,8 @@ func TestSong(t *testing.T) { }, }, Artists: []Artist{ - {Name: "artist_a"}, - {Name: "artist_a"}, + {Name: "artist a"}, + {Name: "artist a"}, {Name: "artist_b"}, }, } @@ -32,3 +32,61 @@ func TestSong(t *testing.T) { t.Errorf(`the two artists with the same names in the album have to be merged, %d`, len(compiled.Album.Artists)) } } + +func TestSongUnify(t *testing.T) { + song := Song{ + Name: " foo Bar BAZ", + Album: Album{ + Name: " foo", + }, + } + + compiled := song.Compile().(Song) + + if compiled.UnifiedName != "foo bar baz" { + t.Errorf(`the song name doesn't get compiled properly`) + } + + if compiled.Album.UnifiedName != "foo" { + t.Errorf(`the album name in the song isn't unified`) + } +} + +func TestAlbumDeduplicate(t *testing.T) { + album := Album{ + Name: "album_a", + Songs: []Song{ + {Name: "song a"}, + {Name: "song a"}, + {Name: "song_b"}, + {Name: "song_c"}, + {Name: "song_d"}, + {Name: "song a"}, + }, + Artists: []Artist{ + {Name: "artist_a"}, + { + Name: "artist_a", + Albums: []Album{ + {Name: "album_a"}, + {Name: "album_b"}, + {Name: "album_a"}, + }, + }, + }, + } + + compiled := album.Compile().(Album) + + if len(compiled.Songs) != 4 { + t.Errorf(`didn't properly merge songs`) + } + + if len(compiled.Artists) != 1 { + t.Errorf(`didn't properly merge artists`) + } + + if len(compiled.Artists[0].Albums) != 2 { + t.Errorf(`didn't properly merge or deduplicate albums`) + } +}