113 lines
2.6 KiB
Go
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)
|
|
}
|