From 55e10b9c778729154e3ba0aaa0a43b135270ae99 Mon Sep 17 00:00:00 2001 From: Deluan Date: Fri, 13 Mar 2026 19:20:07 -0400 Subject: [PATCH] fix(playlist): update smart playlist rules during metadata update Signed-off-by: Deluan --- core/playlists/rest_adapter.go | 2 ++ core/playlists/rest_adapter_test.go | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/core/playlists/rest_adapter.go b/core/playlists/rest_adapter.go index c9cd4c13..3fecda0d 100644 --- a/core/playlists/rest_adapter.go +++ b/core/playlists/rest_adapter.go @@ -97,5 +97,7 @@ func (s *playlists) updatePlaylistEntity(ctx context.Context, id string, entity if entity.OwnerID != "" { current.OwnerID = entity.OwnerID } + // Apply smart playlist rules update + current.Rules = entity.Rules return s.updateMetadata(ctx, s.ds, current, &entity.Name, &entity.Comment, &entity.Public) } diff --git a/core/playlists/rest_adapter_test.go b/core/playlists/rest_adapter_test.go index 29db2fc3..70ca8a9e 100644 --- a/core/playlists/rest_adapter_test.go +++ b/core/playlists/rest_adapter_test.go @@ -125,6 +125,22 @@ var _ = Describe("REST Adapter", func() { Expect(err).To(Equal(rest.ErrPermissionDenied)) }) + It("updates smart playlist rules", func() { + mockPlsRepo.Data["smart-1"] = &model.Playlist{ + ID: "smart-1", + Name: "Smart Playlist", + OwnerID: "user-1", + Rules: &criteria.Criteria{Expression: criteria.Contains{"title": "old"}}, + } + ctx = request.WithUser(ctx, model.User{ID: "user-1", IsAdmin: false}) + repo = ps.NewRepository(ctx).(rest.Persistable) + newRules := &criteria.Criteria{Expression: criteria.Contains{"title": "new"}} + pls := &model.Playlist{Name: "Smart Playlist", Rules: newRules} + err := repo.Update("smart-1", pls) + Expect(err).ToNot(HaveOccurred()) + Expect(mockPlsRepo.Last.Rules).To(Equal(newRules)) + }) + It("returns rest.ErrNotFound when playlist doesn't exist", func() { ctx = request.WithUser(ctx, model.User{ID: "user-1", IsAdmin: false}) repo = ps.NewRepository(ctx).(rest.Persistable)