node build fixed
This commit is contained in:
273
seanime-2.9.10/internal/library/scanner/media_fetcher_test.go
Normal file
273
seanime-2.9.10/internal/library/scanner/media_fetcher_test.go
Normal file
@@ -0,0 +1,273 @@
|
||||
package scanner
|
||||
|
||||
import (
|
||||
"seanime/internal/api/anilist"
|
||||
"seanime/internal/api/metadata"
|
||||
"seanime/internal/library/anime"
|
||||
"seanime/internal/platforms/anilist_platform"
|
||||
"seanime/internal/test_utils"
|
||||
"seanime/internal/util"
|
||||
"seanime/internal/util/limiter"
|
||||
"testing"
|
||||
|
||||
"github.com/samber/lo"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestNewMediaFetcher(t *testing.T) {
|
||||
test_utils.InitTestProvider(t, test_utils.Anilist())
|
||||
|
||||
anilistClient := anilist.TestGetMockAnilistClient()
|
||||
logger := util.NewLogger()
|
||||
anilistPlatform := anilist_platform.NewAnilistPlatform(anilistClient, logger)
|
||||
metadataProvider := metadata.GetMockProvider(t)
|
||||
completeAnimeCache := anilist.NewCompleteAnimeCache()
|
||||
anilistRateLimiter := limiter.NewAnilistLimiter()
|
||||
|
||||
dir := "E:/Anime"
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
paths []string
|
||||
enhanced bool
|
||||
disableAnimeCollection bool
|
||||
}{
|
||||
{
|
||||
name: "86 - Eighty Six Part 1 & 2",
|
||||
paths: []string{
|
||||
"E:/Anime/[SubsPlease] 86 - Eighty Six (01-23) (1080p) [Batch]/[SubsPlease] 86 - Eighty Six - 20v2 (1080p) [30072859].mkv",
|
||||
"E:/Anime/[SubsPlease] 86 - Eighty Six (01-23) (1080p) [Batch]/[SubsPlease] 86 - Eighty Six - 21v2 (1080p) [4B1616A5].mkv",
|
||||
"E:/Anime/[SubsPlease] 86 - Eighty Six (01-23) (1080p) [Batch]/[SubsPlease] 86 - Eighty Six - 22v2 (1080p) [58BF43B4].mkv",
|
||||
"E:/Anime/[SubsPlease] 86 - Eighty Six (01-23) (1080p) [Batch]/[SubsPlease] 86 - Eighty Six - 23v2 (1080p) [D94B4894].mkv",
|
||||
},
|
||||
enhanced: false,
|
||||
disableAnimeCollection: false,
|
||||
},
|
||||
{
|
||||
name: "86 - Eighty Six Part 1 & 2",
|
||||
paths: []string{
|
||||
"E:/Anime/[SubsPlease] 86 - Eighty Six (01-23) (1080p) [Batch]/[SubsPlease] 86 - Eighty Six - 20v2 (1080p) [30072859].mkv",
|
||||
"E:/Anime/[SubsPlease] 86 - Eighty Six (01-23) (1080p) [Batch]/[SubsPlease] 86 - Eighty Six - 21v2 (1080p) [4B1616A5].mkv",
|
||||
"E:/Anime/[SubsPlease] 86 - Eighty Six (01-23) (1080p) [Batch]/[SubsPlease] 86 - Eighty Six - 22v2 (1080p) [58BF43B4].mkv",
|
||||
"E:/Anime/[SubsPlease] 86 - Eighty Six (01-23) (1080p) [Batch]/[SubsPlease] 86 - Eighty Six - 23v2 (1080p) [D94B4894].mkv",
|
||||
},
|
||||
enhanced: true,
|
||||
disableAnimeCollection: true,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
|
||||
scanLogger, err := NewConsoleScanLogger()
|
||||
if err != nil {
|
||||
t.Fatal("expected result, got error:", err.Error())
|
||||
}
|
||||
|
||||
// +---------------------+
|
||||
// | Local Files |
|
||||
// +---------------------+
|
||||
|
||||
var lfs []*anime.LocalFile
|
||||
for _, path := range tt.paths {
|
||||
lf := anime.NewLocalFile(path, dir)
|
||||
lfs = append(lfs, lf)
|
||||
}
|
||||
|
||||
// +---------------------+
|
||||
// | MediaFetcher |
|
||||
// +---------------------+
|
||||
|
||||
mf, err := NewMediaFetcher(t.Context(), &MediaFetcherOptions{
|
||||
Enhanced: tt.enhanced,
|
||||
Platform: anilistPlatform,
|
||||
LocalFiles: lfs,
|
||||
CompleteAnimeCache: completeAnimeCache,
|
||||
MetadataProvider: metadataProvider,
|
||||
Logger: util.NewLogger(),
|
||||
AnilistRateLimiter: anilistRateLimiter,
|
||||
ScanLogger: scanLogger,
|
||||
DisableAnimeCollection: tt.disableAnimeCollection,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal("expected result, got error:", err.Error())
|
||||
}
|
||||
|
||||
mc := NewMediaContainer(&MediaContainerOptions{
|
||||
AllMedia: mf.AllMedia,
|
||||
ScanLogger: scanLogger,
|
||||
})
|
||||
|
||||
for _, m := range mc.NormalizedMedia {
|
||||
t.Log(m.GetTitleSafe())
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestNewEnhancedMediaFetcher(t *testing.T) {
|
||||
|
||||
anilistClient := anilist.TestGetMockAnilistClient()
|
||||
logger := util.NewLogger()
|
||||
anilistPlatform := anilist_platform.NewAnilistPlatform(anilistClient, logger)
|
||||
metaProvider := metadata.GetMockProvider(t)
|
||||
completeAnimeCache := anilist.NewCompleteAnimeCache()
|
||||
anilistRateLimiter := limiter.NewAnilistLimiter()
|
||||
|
||||
dir := "E:/Anime"
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
paths []string
|
||||
enhanced bool
|
||||
}{
|
||||
{
|
||||
name: "86 - Eighty Six Part 1 & 2",
|
||||
paths: []string{
|
||||
"E:/Anime/[SubsPlease] 86 - Eighty Six (01-23) (1080p) [Batch]/[SubsPlease] 86 - Eighty Six - 20v2 (1080p) [30072859].mkv",
|
||||
"E:/Anime/[SubsPlease] 86 - Eighty Six (01-23) (1080p) [Batch]/[SubsPlease] 86 - Eighty Six - 21v2 (1080p) [4B1616A5].mkv",
|
||||
"E:/Anime/[SubsPlease] 86 - Eighty Six (01-23) (1080p) [Batch]/[SubsPlease] 86 - Eighty Six - 22v2 (1080p) [58BF43B4].mkv",
|
||||
"E:/Anime/[SubsPlease] 86 - Eighty Six (01-23) (1080p) [Batch]/[SubsPlease] 86 - Eighty Six - 23v2 (1080p) [D94B4894].mkv",
|
||||
},
|
||||
enhanced: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
|
||||
scanLogger, err := NewScanLogger("./logs")
|
||||
if err != nil {
|
||||
t.Fatal("expected result, got error:", err.Error())
|
||||
}
|
||||
|
||||
// +---------------------+
|
||||
// | Local Files |
|
||||
// +---------------------+
|
||||
|
||||
var lfs []*anime.LocalFile
|
||||
for _, path := range tt.paths {
|
||||
lf := anime.NewLocalFile(path, dir)
|
||||
lfs = append(lfs, lf)
|
||||
}
|
||||
|
||||
// +---------------------+
|
||||
// | MediaFetcher |
|
||||
// +---------------------+
|
||||
|
||||
mf, err := NewMediaFetcher(t.Context(), &MediaFetcherOptions{
|
||||
Enhanced: tt.enhanced,
|
||||
Platform: anilistPlatform,
|
||||
LocalFiles: lfs,
|
||||
CompleteAnimeCache: completeAnimeCache,
|
||||
MetadataProvider: metaProvider,
|
||||
Logger: util.NewLogger(),
|
||||
AnilistRateLimiter: anilistRateLimiter,
|
||||
ScanLogger: scanLogger,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal("expected result, got error:", err.Error())
|
||||
}
|
||||
|
||||
mc := NewMediaContainer(&MediaContainerOptions{
|
||||
AllMedia: mf.AllMedia,
|
||||
ScanLogger: scanLogger,
|
||||
})
|
||||
|
||||
for _, m := range mc.NormalizedMedia {
|
||||
t.Log(m.GetTitleSafe())
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestFetchMediaFromLocalFiles(t *testing.T) {
|
||||
|
||||
anilistClient := anilist.TestGetMockAnilistClient()
|
||||
logger := util.NewLogger()
|
||||
anilistPlatform := anilist_platform.NewAnilistPlatform(anilistClient, logger)
|
||||
metaProvider := metadata.GetMockProvider(t)
|
||||
completeAnimeCache := anilist.NewCompleteAnimeCache()
|
||||
anilistRateLimiter := limiter.NewAnilistLimiter()
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
paths []string
|
||||
expectedMediaId []int
|
||||
}{
|
||||
{
|
||||
name: "86 - Eighty Six Part 1 & 2",
|
||||
paths: []string{
|
||||
"E:/Anime/[SubsPlease] 86 - Eighty Six (01-23) (1080p) [Batch]/[SubsPlease] 86 - Eighty Six - 20v2 (1080p) [30072859].mkv",
|
||||
"E:/Anime/[SubsPlease] 86 - Eighty Six (01-23) (1080p) [Batch]/[SubsPlease] 86 - Eighty Six - 21v2 (1080p) [4B1616A5].mkv",
|
||||
"E:/Anime/[SubsPlease] 86 - Eighty Six (01-23) (1080p) [Batch]/[SubsPlease] 86 - Eighty Six - 22v2 (1080p) [58BF43B4].mkv",
|
||||
"E:/Anime/[SubsPlease] 86 - Eighty Six (01-23) (1080p) [Batch]/[SubsPlease] 86 - Eighty Six - 23v2 (1080p) [D94B4894].mkv",
|
||||
},
|
||||
expectedMediaId: []int{116589, 131586}, // 86 - Eighty Six Part 1 & 2
|
||||
},
|
||||
}
|
||||
|
||||
dir := "E:/Anime"
|
||||
|
||||
for _, tt := range tests {
|
||||
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
|
||||
scanLogger, err := NewScanLogger("./logs")
|
||||
if err != nil {
|
||||
t.Fatal("expected result, got error:", err.Error())
|
||||
}
|
||||
|
||||
// +---------------------+
|
||||
// | Local Files |
|
||||
// +---------------------+
|
||||
|
||||
var lfs []*anime.LocalFile
|
||||
for _, path := range tt.paths {
|
||||
lf := anime.NewLocalFile(path, dir)
|
||||
lfs = append(lfs, lf)
|
||||
}
|
||||
|
||||
// +--------------------------+
|
||||
// | FetchMediaFromLocalFiles |
|
||||
// +--------------------------+
|
||||
|
||||
media, ok := FetchMediaFromLocalFiles(
|
||||
t.Context(),
|
||||
anilistPlatform,
|
||||
lfs,
|
||||
completeAnimeCache,
|
||||
metaProvider,
|
||||
anilistRateLimiter,
|
||||
scanLogger,
|
||||
)
|
||||
if !ok {
|
||||
t.Fatal("could not fetch media from local files")
|
||||
}
|
||||
|
||||
ids := lo.Map(media, func(k *anilist.CompleteAnime, _ int) int {
|
||||
return k.ID
|
||||
})
|
||||
|
||||
// Test if all expected media IDs are present
|
||||
for _, id := range tt.expectedMediaId {
|
||||
assert.Contains(t, ids, id)
|
||||
}
|
||||
|
||||
t.Log("Media IDs:")
|
||||
for _, m := range media {
|
||||
t.Log(m.GetTitleSafe())
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user