mirror of
https://github.com/truewhile/MeBox.git
synced 2026-09-28 11:16:37 +08:00
04fc50a4b0
* Add favourite buttons to library list and series detail pages Co-authored-by: truewhile <truewhile@users.noreply.github.com> * Fix favourites list for remote Emby mounted media Co-authored-by: truewhile <truewhile@users.noreply.github.com> * Route favourites to library series detail when appropriate Co-authored-by: truewhile <truewhile@users.noreply.github.com> * Fix favourites link to library series for remote anime paths Co-authored-by: truewhile <truewhile@users.noreply.github.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: truewhile <truewhile@users.noreply.github.com>
47 lines
1.3 KiB
Go
47 lines
1.3 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/ShukeBta/MMTL/internal/model"
|
|
"github.com/ShukeBta/MMTL/internal/repository"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
func TestListFavouritesIncludesLocalAndRemoteIDs(t *testing.T) {
|
|
db := newServiceTestDB(t, &model.Favorite{}, &model.Media{})
|
|
repos := repository.New(db)
|
|
userID := "user-1"
|
|
local := model.Media{
|
|
Base: model.Base{ID: "local-movie-1"},
|
|
Title: "Local Movie",
|
|
}
|
|
if err := db.Create(&local).Error; err != nil {
|
|
t.Fatalf("create local media: %v", err)
|
|
}
|
|
remoteID := EncodeEmbyRemoteID("mount-1", "remote-series-1")
|
|
favs := []model.Favorite{
|
|
{Base: model.Base{CreatedAt: time.Now().Add(-time.Minute)}, UserID: userID, MediaID: remoteID},
|
|
{Base: model.Base{CreatedAt: time.Now()}, UserID: userID, MediaID: local.ID},
|
|
}
|
|
for i := range favs {
|
|
if err := db.Create(&favs[i]).Error; err != nil {
|
|
t.Fatalf("create favorite %d: %v", i, err)
|
|
}
|
|
}
|
|
|
|
svc := NewPlaybackService(zap.NewNop(), repos)
|
|
items, err := svc.ListFavourites(context.Background(), userID)
|
|
if err != nil {
|
|
t.Fatalf("ListFavourites: %v", err)
|
|
}
|
|
if len(items) != 1 {
|
|
t.Fatalf("expected one hydrated local favourite without remote service, got %d: %#v", len(items), items)
|
|
}
|
|
if items[0].ID != local.ID {
|
|
t.Fatalf("expected local favourite first by created_at desc, got %#v", items[0])
|
|
}
|
|
}
|