Files
seanime-docker/seanime-2.9.10/internal/manga/downloader/chapter_downloader_test.go
2025-09-20 14:08:38 +01:00

113 lines
2.6 KiB
Go

package chapter_downloader
import (
"github.com/stretchr/testify/assert"
"seanime/internal/database/db"
"seanime/internal/events"
hibikemanga "seanime/internal/extension/hibike/manga"
"seanime/internal/manga/providers"
"seanime/internal/test_utils"
"seanime/internal/util"
"testing"
"time"
)
func TestQueue(t *testing.T) {
test_utils.InitTestProvider(t)
tempDir := t.TempDir()
logger := util.NewLogger()
database, err := db.NewDatabase(tempDir, test_utils.ConfigData.Database.Name, logger)
if err != nil {
t.Fatalf("Failed to create database: %v", err)
}
downloadDir := t.TempDir()
downloader := NewDownloader(&NewDownloaderOptions{
Logger: logger,
WSEventManager: events.NewMockWSEventManager(logger),
Database: database,
DownloadDir: downloadDir,
})
downloader.Start()
tests := []struct {
name string
providerName string
provider hibikemanga.Provider
mangaId string
mediaId int
chapterIndex uint
}{
{
providerName: manga_providers.ComickProvider,
provider: manga_providers.NewComicK(util.NewLogger()),
name: "Jujutsu Kaisen",
mangaId: "TA22I5O7",
chapterIndex: 258,
mediaId: 101517,
},
{
providerName: manga_providers.ComickProvider,
provider: manga_providers.NewComicK(util.NewLogger()),
name: "Jujutsu Kaisen",
mangaId: "TA22I5O7",
chapterIndex: 259,
mediaId: 101517,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
// SETUP
chapters, err := tt.provider.FindChapters(tt.mangaId)
if assert.NoError(t, err, "comick.FindChapters() error") {
assert.NotEmpty(t, chapters, "chapters is empty")
var chapterInfo *hibikemanga.ChapterDetails
for _, chapter := range chapters {
if chapter.Index == tt.chapterIndex {
chapterInfo = chapter
break
}
}
if assert.NotNil(t, chapterInfo, "chapter not found") {
pages, err := tt.provider.FindChapterPages(chapterInfo.ID)
if assert.NoError(t, err, "provider.FindChapterPages() error") {
assert.NotEmpty(t, pages, "pages is empty")
//
// TEST
//
err := downloader.AddToQueue(DownloadOptions{
DownloadID: DownloadID{
Provider: string(tt.providerName),
MediaId: tt.mediaId,
ChapterId: chapterInfo.ID,
ChapterNumber: chapterInfo.Chapter,
},
Pages: pages,
StartNow: true,
})
if err != nil {
t.Fatalf("Failed to download chapter: %v", err)
}
}
}
}
})
}
time.Sleep(10 * time.Second)
}