diff --git a/server/subsonic/helpers.go b/server/subsonic/helpers.go index 056caed84..880bb6ddf 100644 --- a/server/subsonic/helpers.go +++ b/server/subsonic/helpers.go @@ -347,6 +347,9 @@ func buildDiscSubtitles(a model.Album) []responses.DiscTitle { for num, title := range a.Discs { discTitles = append(discTitles, responses.DiscTitle{Disc: int32(num), Title: title}) } + if len(discTitles) == 1 && discTitles[0].Title == "" { + return nil + } sort.Slice(discTitles, func(i, j int) bool { return discTitles[i].Disc < discTitles[j].Disc }) diff --git a/server/subsonic/helpers_test.go b/server/subsonic/helpers_test.go index 654c65813..dd8bd88b1 100644 --- a/server/subsonic/helpers_test.go +++ b/server/subsonic/helpers_test.go @@ -82,6 +82,24 @@ var _ = Describe("helpers", func() { Expect(buildDiscSubtitles(album)).To(BeNil()) }) + It("should return nil when album has only one disc without title", func() { + album := model.Album{ + Discs: map[int]string{ + 1: "", + }, + } + Expect(buildDiscSubtitles(album)).To(BeNil()) + }) + + It("should return the disc title for a single disc", func() { + album := model.Album{ + Discs: map[int]string{ + 1: "Special Edition", + }, + } + Expect(buildDiscSubtitles(album)).To(Equal([]responses.DiscTitle{{Disc: 1, Title: "Special Edition"}})) + }) + It("should return correct disc titles when album has discs with valid disc numbers", func() { album := model.Album{ Discs: map[int]string{