55 lines
1.4 KiB
Go
55 lines
1.4 KiB
Go
package copier
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"jukebox_maker/internal/config"
|
|
)
|
|
|
|
func TestBuildFileListFiltersAllowedExtensions(t *testing.T) {
|
|
root := t.TempDir()
|
|
source := filepath.Join(root, "music")
|
|
if err := os.MkdirAll(filepath.Join(source, "nested"), 0o755); err != nil {
|
|
t.Fatalf("MkdirAll() error = %v", err)
|
|
}
|
|
|
|
files := map[string]string{
|
|
filepath.Join(source, "track.mp3"): "audio",
|
|
filepath.Join(source, "clip.mp4"): "video",
|
|
filepath.Join(source, "cover.jpg"): "photo",
|
|
filepath.Join(source, "nested", "note.txt"): "text",
|
|
}
|
|
for path, body := range files {
|
|
if err := os.WriteFile(path, []byte(body), 0o644); err != nil {
|
|
t.Fatalf("WriteFile(%q) error = %v", path, err)
|
|
}
|
|
}
|
|
|
|
items, err := buildFileList("", []config.SourceFolder{
|
|
{Path: source, Enabled: true, Root: true},
|
|
}, nil, config.DefaultAllowedExtensions())
|
|
if err != nil {
|
|
t.Fatalf("buildFileList() error = %v", err)
|
|
}
|
|
|
|
if len(items) != 2 {
|
|
t.Fatalf("buildFileList() len = %d, want 2", len(items))
|
|
}
|
|
|
|
got := make(map[string]struct{}, len(items))
|
|
for _, item := range items {
|
|
got[filepath.Base(item.relPath)] = struct{}{}
|
|
}
|
|
if _, ok := got["track.mp3"]; !ok {
|
|
t.Fatalf("missing mp3 file: %v", got)
|
|
}
|
|
if _, ok := got["clip.mp4"]; !ok {
|
|
t.Fatalf("missing mp4 file: %v", got)
|
|
}
|
|
if _, ok := got["cover.jpg"]; ok {
|
|
t.Fatalf("unexpected jpg file: %v", got)
|
|
}
|
|
}
|