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) } }