navidrome/server/subsonic/bookmarks_test.go
Jiho Andrew Lee 19385dc28b Merge upstream/master into feat-podcast-ux-improvements/5420
Resolve conflicts with the stateless-repositories refactor (#6149):
- port podcast repositories, model interfaces, mocks, service and handlers to per-call ctx
- podcast channel repo now implements generic rest.Repository/Persistable
- register podcast repos in SQLStore and MockDataStore
- merge OpenSubsonic extensions (apiKeyAuthentication + podcast extensions)
- renumber podcast migrations after upstream's latest (20260930...)
2026-09-30 15:23:00 +09:00

48 lines
1.4 KiB
Go

package subsonic
import (
"context"
"github.com/navidrome/navidrome/model"
"github.com/navidrome/navidrome/model/request"
"github.com/navidrome/navidrome/server/subsonic/responses"
"github.com/navidrome/navidrome/tests"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
)
var _ = Describe("Bookmarks", func() {
var router *Router
var ds *tests.MockDataStore
var mfRepo *tests.MockMediaFileRepo
var ctx context.Context
BeforeEach(func() {
ds = &tests.MockDataStore{}
router = New(ds, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
ctx = request.WithUser(context.Background(), model.User{ID: "u1", UserName: "u1"})
mfRepo = ds.MediaFile().(*tests.MockMediaFileRepo)
mfRepo.SetData(model.MediaFiles{{ID: "visible"}})
})
Describe("CreateBookmark", func() {
It("rejects an id the user cannot read", func() {
r := newGetRequest("id=hidden", "position=1").WithContext(ctx)
_, err := router.CreateBookmark(r)
Expect(err).To(HaveOccurred())
Expect(mapToSubsonicError(err).code).To(Equal(responses.ErrorDataNotFound))
Expect(mfRepo.BookmarksAdded).To(BeEmpty())
})
It("accepts an id the user can read", func() {
r := newGetRequest("id=visible", "position=1").WithContext(ctx)
_, err := router.CreateBookmark(r)
Expect(err).ToNot(HaveOccurred())
Expect(mfRepo.BookmarksAdded).To(ConsistOf("visible"))
})
})
})