mirror of
https://github.com/truewhile/MeBox.git
synced 2026-10-11 15:56:37 +08:00
feat: add STRM output directory presets
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/ShukeBta/MediaStationGo/internal/model"
|
||||
"github.com/ShukeBta/MediaStationGo/internal/repository"
|
||||
)
|
||||
|
||||
func TestSTRMOutputPresetsIncludesDefaultsAndLocalLibraries(t *testing.T) {
|
||||
db := newServiceTestDB(t, &model.Library{}, &model.LibraryRoot{})
|
||||
repos := repository.New(db)
|
||||
base := t.TempDir()
|
||||
movieRoot := filepath.Join(base, "strm", "电影")
|
||||
tvRoot := filepath.Join(base, "strm", "电视剧")
|
||||
cloudRoot := BuildCloudLibraryPath("openlist", "/电影", "/电影")
|
||||
disabledRoot := filepath.Join(base, "strm", "动漫")
|
||||
|
||||
libraries := []*model.Library{
|
||||
{Name: "电影 STRM", Path: movieRoot, Type: "movie", Enabled: true},
|
||||
{Name: "电视剧 STRM", Path: tvRoot, Type: "tv", Enabled: true},
|
||||
{Name: "云盘", Path: cloudRoot, Type: "movie", Enabled: true},
|
||||
{Name: "停用", Path: disabledRoot, Type: "tv", Enabled: false},
|
||||
}
|
||||
for _, lib := range libraries {
|
||||
if err := repos.Library.Create(t.Context(), lib); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
if err := repos.DB.Model(&model.Library{}).Where("id = ?", libraries[3].ID).Update("enabled", false).Error; err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
presets, err := STRMOutputPresets(t.Context(), repos)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
got := map[string]STRMOutputPreset{}
|
||||
for _, preset := range presets {
|
||||
got[preset.Path] = preset
|
||||
}
|
||||
|
||||
if got[filepath.Clean("data/strm")].Kind != "default" || got[filepath.Clean("data/strm/tree")].Kind != "default" {
|
||||
t.Fatalf("defaults missing from presets: %#v", presets)
|
||||
}
|
||||
if got[movieRoot].Label != "电影 STRM" || got[movieRoot].Kind != "library" {
|
||||
t.Fatalf("movie preset = %#v, want local library preset", got[movieRoot])
|
||||
}
|
||||
if got[tvRoot].Label != "电视剧 STRM" || got[tvRoot].Kind != "library" {
|
||||
t.Fatalf("tv preset = %#v, want local library preset", got[tvRoot])
|
||||
}
|
||||
if _, ok := got[cloudRoot]; ok {
|
||||
t.Fatalf("cloud library should not be an output preset: %#v", presets)
|
||||
}
|
||||
if _, ok := got[disabledRoot]; ok {
|
||||
t.Fatalf("disabled library should not be an output preset: %#v", presets)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSTRMOutputPresetsDeduplicatesLibraryRoots(t *testing.T) {
|
||||
db := newServiceTestDB(t, &model.Library{}, &model.LibraryRoot{})
|
||||
repos := repository.New(db)
|
||||
root := filepath.Join(t.TempDir(), "strm")
|
||||
lib := model.Library{Name: "STRM", Path: root, Type: "movie", Enabled: true}
|
||||
if err := repos.Library.CreateWithRoots(t.Context(), &lib, []model.LibraryRoot{
|
||||
{Path: root, Enabled: true},
|
||||
{Path: root, Enabled: true},
|
||||
}); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
presets, err := STRMOutputPresets(t.Context(), repos)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
count := 0
|
||||
for _, preset := range presets {
|
||||
if preset.Path == root {
|
||||
count++
|
||||
}
|
||||
}
|
||||
if count != 1 {
|
||||
t.Fatalf("root preset count = %d, presets=%#v", count, presets)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user