mirror of
https://github.com/navidrome/navidrome.git
synced 2026-05-03 06:51:16 +00:00
67 lines
2.1 KiB
Go
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))
|
|
})
|
|
})
|