node build fixed
This commit is contained in:
200
seanime-2.9.10/internal/debrid/client/utils_test.go
Normal file
200
seanime-2.9.10/internal/debrid/client/utils_test.go
Normal file
@@ -0,0 +1,200 @@
|
||||
package debrid_client
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/stretchr/testify/require"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func PrintPathStructure(path string, indent string) error {
|
||||
entries, err := os.ReadDir(path)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to read directory %s: %w", path, err)
|
||||
}
|
||||
|
||||
for _, entry := range entries {
|
||||
fmt.Println(indent + entry.Name())
|
||||
|
||||
if entry.IsDir() {
|
||||
newIndent := indent + " "
|
||||
newPath := filepath.Join(path, entry.Name())
|
||||
if err := PrintPathStructure(newPath, newIndent); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func TestCreateTempDir(t *testing.T) {
|
||||
|
||||
files := []string{
|
||||
"/12345/Anime/Ep1.mkv",
|
||||
"/12345/Anime/Ep2.mkv",
|
||||
}
|
||||
|
||||
root := "./root"
|
||||
for _, file := range files {
|
||||
path := filepath.Join(root, file)
|
||||
if err := os.MkdirAll(filepath.Dir(path), 0755); err != nil {
|
||||
t.Fatalf("failed to create directory: %v", err)
|
||||
}
|
||||
if err := os.WriteFile(path, []byte("dummy content"), 0644); err != nil {
|
||||
t.Fatalf("failed to create file %s: %v", path, err)
|
||||
}
|
||||
}
|
||||
defer os.RemoveAll(root)
|
||||
|
||||
err := PrintPathStructure(root, "")
|
||||
require.NoError(t, err)
|
||||
|
||||
}
|
||||
|
||||
func TestMoveContentsTo(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
files []string
|
||||
dest string
|
||||
expected string
|
||||
expectErr bool
|
||||
}{
|
||||
{
|
||||
name: "Case 1: Move folder with files",
|
||||
files: []string{
|
||||
"/Anime/Ep1.mkv",
|
||||
"/Anime/Ep2.mkv",
|
||||
},
|
||||
dest: "./dest",
|
||||
expected: "./dest/Anime",
|
||||
expectErr: false,
|
||||
},
|
||||
{
|
||||
name: "Case 2: Move folder with single hash directory",
|
||||
files: []string{
|
||||
"/12345/Anime/Ep1.mkv",
|
||||
"/12345/Anime/Ep2.mkv",
|
||||
},
|
||||
dest: "./dest",
|
||||
expected: "./dest/Anime",
|
||||
expectErr: false,
|
||||
},
|
||||
{
|
||||
name: "Case 3: Move single file",
|
||||
files: []string{
|
||||
"/12345/Anime/Ep1.mkv",
|
||||
},
|
||||
dest: "./dest",
|
||||
expected: "./dest/Ep1.mkv",
|
||||
expectErr: false,
|
||||
},
|
||||
{
|
||||
name: "Case 5: Source directory does not exist",
|
||||
files: []string{},
|
||||
dest: "./dest",
|
||||
expected: "",
|
||||
expectErr: true,
|
||||
},
|
||||
{
|
||||
name: "Case 6: Move single file with hash directory",
|
||||
files: []string{
|
||||
"/12345/Anime/Ep1.mkv",
|
||||
},
|
||||
dest: "./dest",
|
||||
expected: "./dest/Ep1.mkv",
|
||||
},
|
||||
{
|
||||
name: "Case 7",
|
||||
files: []string{
|
||||
"Ep1.mkv",
|
||||
},
|
||||
dest: "./dest",
|
||||
expected: "./dest/Ep1.mkv",
|
||||
},
|
||||
{
|
||||
name: "Case 8",
|
||||
files: []string{
|
||||
"Ep1.mkv",
|
||||
"Ep2.mkv",
|
||||
},
|
||||
dest: "./dest",
|
||||
expected: "./dest/Ep2.mkv",
|
||||
},
|
||||
{
|
||||
name: "Case 9",
|
||||
files: []string{
|
||||
"/12345/Anime/Anime 1/Ep1.mkv",
|
||||
"/12345/Anime/Anime 1/Ep2.mkv",
|
||||
"/12345/Anime/Anime 2/Ep1.mkv",
|
||||
"/12345/Anime/Anime 2/Ep2.mkv",
|
||||
"/12345/Anime 2/Anime 3/Ep1.mkv",
|
||||
"/12345/Anime 2/Anime 3/Ep2.mkv",
|
||||
},
|
||||
dest: "./dest",
|
||||
expected: "./dest/12345",
|
||||
expectErr: false,
|
||||
},
|
||||
{
|
||||
name: "Case 10",
|
||||
files: []string{
|
||||
"/Users/r/Downloads/b6aa416f662a2df83c6f5f79da95004ced59b8ef/Tsue to Tsurugi no Wistoria S01 1080p WEBRip DD+ x265-EMBER/[EMBER] Tsue to Tsurugi no Wistoria - 01.mkv",
|
||||
"/Users/r/Downloads/b6aa416f662a2df83c6f5f79da95004ced59b8ef/Tsue to Tsurugi no Wistoria S01 1080p WEBRip DD+ x265-EMBER/[EMBER] Tsue to Tsurugi no Wistoria - 02.mkv",
|
||||
},
|
||||
dest: "./dest",
|
||||
expected: "./dest/Tsue to Tsurugi no Wistoria S01 1080p WEBRip DD+ x265-EMBER",
|
||||
expectErr: false,
|
||||
},
|
||||
{
|
||||
name: "Case 11",
|
||||
files: []string{
|
||||
"/Users/rahim/Downloads/80431b4f9a12f4e06616062d3d3973b9ef99b5e6/[SubsPlease] Bocchi the Rock! - 01 (1080p) [E04F4EFB]/[SubsPlease] Bocchi the Rock! - 01 (1080p) [E04F4EFB].mkv",
|
||||
},
|
||||
dest: "./dest",
|
||||
expected: "./dest/[SubsPlease] Bocchi the Rock! - 01 (1080p) [E04F4EFB].mkv",
|
||||
expectErr: false,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
// Create the source directory structure
|
||||
root := "./root"
|
||||
for _, file := range tt.files {
|
||||
path := filepath.Join(root, file)
|
||||
if err := os.MkdirAll(filepath.Dir(path), 0755); err != nil {
|
||||
t.Fatalf("failed to create directory: %v", err)
|
||||
}
|
||||
if err := os.WriteFile(path, []byte("dummy content"), 0644); err != nil {
|
||||
t.Fatalf("failed to create file %s: %v", path, err)
|
||||
}
|
||||
}
|
||||
defer os.RemoveAll(root) // Cleanup temp dir after test
|
||||
|
||||
PrintPathStructure(root, "")
|
||||
println("-----------------------------")
|
||||
|
||||
// Create the destination directory
|
||||
if err := os.MkdirAll(tt.dest, 0755); err != nil {
|
||||
t.Fatalf("failed to create dest directory: %v", err)
|
||||
}
|
||||
defer os.RemoveAll(tt.dest) // Cleanup dest after test
|
||||
|
||||
// Move the contents
|
||||
err := moveContentsTo(root, tt.dest)
|
||||
|
||||
if (err != nil) != tt.expectErr {
|
||||
t.Errorf("unexpected error: %v", err)
|
||||
}
|
||||
|
||||
if !tt.expectErr {
|
||||
if _, err := os.Stat(tt.expected); os.IsNotExist(err) {
|
||||
t.Errorf("expected directory or file does not exist: %s", tt.expected)
|
||||
}
|
||||
|
||||
PrintPathStructure(tt.dest, "")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user