node build fixed
This commit is contained in:
110
seanime-2.9.10/internal/debrid/client/download_test.go
Normal file
110
seanime-2.9.10/internal/debrid/client/download_test.go
Normal file
@@ -0,0 +1,110 @@
|
||||
package debrid_client
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/stretchr/testify/require"
|
||||
"os"
|
||||
"seanime/internal/database/db"
|
||||
"seanime/internal/database/models"
|
||||
"seanime/internal/debrid/debrid"
|
||||
"seanime/internal/test_utils"
|
||||
"seanime/internal/util"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestTorBoxDownload(t *testing.T) {
|
||||
test_utils.InitTestProvider(t)
|
||||
|
||||
logger := util.NewLogger()
|
||||
database, err := db.NewDatabase(test_utils.ConfigData.Path.DataDir, test_utils.ConfigData.Database.Name, logger)
|
||||
require.NoError(t, err)
|
||||
|
||||
repo := GetMockRepository(t, database)
|
||||
|
||||
err = repo.InitializeProvider(&models.DebridSettings{
|
||||
Enabled: true,
|
||||
Provider: "torbox",
|
||||
ApiKey: test_utils.ConfigData.Provider.TorBoxApiKey,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
tempDestinationDir := t.TempDir()
|
||||
|
||||
fmt.Println(tempDestinationDir)
|
||||
|
||||
//
|
||||
// Test download
|
||||
//
|
||||
torrentItemId := "116389"
|
||||
|
||||
err = database.InsertDebridTorrentItem(&models.DebridTorrentItem{
|
||||
TorrentItemID: torrentItemId,
|
||||
Destination: tempDestinationDir,
|
||||
Provider: "torbox",
|
||||
MediaId: 0, // Not yet used
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
// Get the provider
|
||||
provider, err := repo.GetProvider()
|
||||
require.NoError(t, err)
|
||||
|
||||
// Get the torrents from the provider
|
||||
torrentItems, err := provider.GetTorrents()
|
||||
require.NoError(t, err)
|
||||
|
||||
// Get the torrent item from the database
|
||||
dbTorrentItem, err := database.GetDebridTorrentItemByTorrentItemId(torrentItemId)
|
||||
|
||||
// Select the torrent item from the provider
|
||||
var torrentItem *debrid.TorrentItem
|
||||
for _, item := range torrentItems {
|
||||
if item.ID == dbTorrentItem.TorrentItemID {
|
||||
torrentItem = item
|
||||
}
|
||||
}
|
||||
require.NotNil(t, torrentItem)
|
||||
|
||||
// Check if the torrent is ready
|
||||
require.Truef(t, torrentItem.IsReady, "Torrent is not ready")
|
||||
|
||||
// Remove the item from the database
|
||||
err = database.DeleteDebridTorrentItemByDbId(dbTorrentItem.ID)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Download the torrent
|
||||
err = repo.downloadTorrentItem(dbTorrentItem.TorrentItemID, torrentItem.Name, dbTorrentItem.Destination)
|
||||
require.NoError(t, err)
|
||||
|
||||
time.Sleep(time.Millisecond * 500)
|
||||
|
||||
// Wait for the download to finish
|
||||
loop:
|
||||
for {
|
||||
select {
|
||||
case <-time.After(time.Second * 1):
|
||||
isEmpty := true
|
||||
repo.ctxMap.Range(func(key string, value context.CancelFunc) bool {
|
||||
isEmpty = false
|
||||
return true
|
||||
})
|
||||
if isEmpty {
|
||||
break loop
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Check if the file exists
|
||||
entries, err := os.ReadDir(tempDestinationDir)
|
||||
require.NoError(t, err)
|
||||
|
||||
fmt.Println("=== Downloaded files ===")
|
||||
|
||||
for _, entry := range entries {
|
||||
util.Spew(entry.Name())
|
||||
}
|
||||
|
||||
require.NotEmpty(t, entries)
|
||||
}
|
||||
Reference in New Issue
Block a user