navidrome/model/get_entity_test.go
Patrik Wallström b763ff7bab Add Folder lookup to GetEntityByID, add MockFolderRepo
Signed-off-by: Patrik Wallström <pawal@amplitut.de>
2026-03-15 02:58:11 +01:00

67 lines
2.1 KiB
Go

package model_test
import (
"context"
"github.com/navidrome/navidrome/model"
"github.com/navidrome/navidrome/tests"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)
var _ = Describe("GetEntityByID", func() {
var (
ctx context.Context
ds *tests.MockDataStore
)
BeforeEach(func() {
ctx = context.Background()
ds = &tests.MockDataStore{}
})
It("returns a Folder when found", func() {
folder := model.Folder{ID: "folder-1", Name: "Jazz"}
ds.Folder(ctx).(*tests.MockFolderRepo).SetData([]model.Folder{folder})
entity, err := model.GetEntityByID(ctx, ds, "folder-1")
Expect(err).ToNot(HaveOccurred())
Expect(entity).To(BeAssignableToTypeOf(&model.Folder{}))
Expect(entity.(*model.Folder).ID).To(Equal("folder-1"))
})
It("returns a Folder before trying Artist for the same ID", func() {
folder := model.Folder{ID: "shared-id", Name: "Folder"}
artist := model.Artist{ID: "shared-id", Name: "Artist"}
ds.Folder(ctx).(*tests.MockFolderRepo).SetData([]model.Folder{folder})
ds.Artist(ctx).(*tests.MockArtistRepo).SetData(model.Artists{artist})
entity, err := model.GetEntityByID(ctx, ds, "shared-id")
Expect(err).ToNot(HaveOccurred())
Expect(entity).To(BeAssignableToTypeOf(&model.Folder{}))
})
It("returns an Artist when no Folder matches", func() {
artist := model.Artist{ID: "artist-1", Name: "Kraftwerk"}
ds.Artist(ctx).(*tests.MockArtistRepo).SetData(model.Artists{artist})
entity, err := model.GetEntityByID(ctx, ds, "artist-1")
Expect(err).ToNot(HaveOccurred())
Expect(entity).To(BeAssignableToTypeOf(&model.Artist{}))
})
It("returns an Album when no Folder or Artist matches", func() {
album := model.Album{ID: "album-1", Name: "Radioactivity"}
ds.Album(ctx).(*tests.MockAlbumRepo).SetData(model.Albums{album})
entity, err := model.GetEntityByID(ctx, ds, "album-1")
Expect(err).ToNot(HaveOccurred())
Expect(entity).To(BeAssignableToTypeOf(&model.Album{}))
})
It("returns an error when no entity is found", func() {
_, err := model.GetEntityByID(ctx, ds, "nonexistent")
Expect(err).To(MatchError(model.ErrNotFound))
})
})