Files
MeBox/internal/service/stats_test.go
T
2026-06-10 20:43:42 +08:00

51 lines
1.6 KiB
Go

package service
import (
"testing"
"github.com/glebarez/sqlite"
"go.uber.org/zap"
"gorm.io/gorm"
"github.com/ShukeBta/MediaStationGo/internal/model"
"github.com/ShukeBta/MediaStationGo/internal/repository"
)
func TestStatsComputeFiltersDisabledLibraries(t *testing.T) {
db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
if err != nil {
t.Fatal(err)
}
if err := db.AutoMigrate(&model.Library{}, &model.Media{}, &model.User{}); err != nil {
t.Fatal(err)
}
repos := repository.New(db)
enabled := &model.Library{Name: "电影", Path: "/media/movies", Type: "movie", Enabled: true}
disabled := &model.Library{Name: "停用库", Path: "/media/disabled", Type: "movie", Enabled: false}
if err := repos.Library.Create(t.Context(), enabled); err != nil {
t.Fatal(err)
}
if err := repos.Library.Create(t.Context(), disabled); err != nil {
t.Fatal(err)
}
if err := db.Model(&model.Library{}).Where("id = ?", disabled.ID).Update("enabled", false).Error; err != nil {
t.Fatal(err)
}
for _, media := range []*model.Media{
{LibraryID: enabled.ID, Title: "Visible", Path: "/media/movies/a.mkv", SizeBytes: 100},
{LibraryID: disabled.ID, Title: "Hidden", Path: "/media/disabled/b.mkv", SizeBytes: 900},
} {
if err := repos.Media.Upsert(t.Context(), media); err != nil {
t.Fatal(err)
}
}
snap, err := NewStatsService(zap.NewNop(), repos).Compute(t.Context(), t.TempDir())
if err != nil {
t.Fatal(err)
}
if snap.Libraries != 1 || snap.MediaCount != 1 || snap.TotalSizeBytes != 100 {
t.Fatalf("stats = libraries=%d media=%d size=%d, want 1/1/100", snap.Libraries, snap.MediaCount, snap.TotalSizeBytes)
}
}