From 80ded63d353912e6999620495d9a1c30ca7ebecd Mon Sep 17 00:00:00 2001 From: Deluan Date: Fri, 30 Dec 2022 15:13:04 -0500 Subject: [PATCH] Add test for mapTrackTitle --- ...mapping_test.go => mapping_internal_test.go} | 17 +++++++++++++++++ scanner/metadata/metadata.go | 14 +++++++++----- 2 files changed, 26 insertions(+), 5 deletions(-) rename scanner/{mapping_test.go => mapping_internal_test.go} (74%) diff --git a/scanner/mapping_test.go b/scanner/mapping_internal_test.go similarity index 74% rename from scanner/mapping_test.go rename to scanner/mapping_internal_test.go index f2281c1b..35c975c5 100644 --- a/scanner/mapping_test.go +++ b/scanner/mapping_internal_test.go @@ -5,12 +5,29 @@ import ( "github.com/navidrome/navidrome/conf" "github.com/navidrome/navidrome/model" + "github.com/navidrome/navidrome/scanner/metadata" "github.com/navidrome/navidrome/tests" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" ) var _ = Describe("mapping", func() { + Describe("mediaFileMapper", func() { + var mapper *mediaFileMapper + BeforeEach(func() { + mapper = newMediaFileMapper("/music", nil) + }) + Describe("mapTrackTitle", func() { + It("returns the Title when it is available", func() { + md := metadata.NewTag("/music/artist/album01/Song.mp3", nil, metadata.ParsedTags{"title": []string{"This is not a love song"}}) + Expect(mapper.mapTrackTitle(md)).To(Equal("This is not a love song")) + }) + It("returns the filename if Title is not set", func() { + md := metadata.NewTag("/music/artist/album01/Song.mp3", nil, metadata.ParsedTags{}) + Expect(mapper.mapTrackTitle(md)).To(Equal("artist/album01/Song")) + }) + }) + }) Describe("sanitizeFieldForSorting", func() { BeforeEach(func() { conf.Server.IgnoredArticles = "The O" diff --git a/scanner/metadata/metadata.go b/scanner/metadata/metadata.go index 0e9d3dae..1eecba08 100644 --- a/scanner/metadata/metadata.go +++ b/scanner/metadata/metadata.go @@ -49,16 +49,20 @@ func Extract(files ...string) (map[string]Tags, error) { } tags = tags.Map(p.CustomMappings()) - result[filePath] = Tags{ - filePath: filePath, - fileInfo: fileInfo, - tags: tags, - } + result[filePath] = NewTag(filePath, fileInfo, tags) } return result, nil } +func NewTag(filePath string, fileInfo os.FileInfo, tags ParsedTags) Tags { + return Tags{ + filePath: filePath, + fileInfo: fileInfo, + tags: tags, + } +} + type ParsedTags map[string][]string func (p ParsedTags) Map(customMappings ParsedTags) ParsedTags {