package deezer import ( "context" "encoding/json" "net/http" "net/http/httptest" "testing" "streamrip-go/internal/config" ) func TestSearchTrack(t *testing.T) { ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { switch r.URL.Path { case "/search/track": _ = json.NewEncoder(w).Encode(map[string]any{"data": []any{map[string]any{"id": 1, "title": "Dreams", "artist": map[string]any{"name": "Fleetwood Mac"}}}}) default: w.WriteHeader(http.StatusNotFound) } })) defer ts.Close() cfgData := config.DefaultConfigData() c := New(&config.Config{File: cfgData, Session: cfgData}) c.loggedIn = true orig := baseURL baseURL = ts.URL defer func() { baseURL = orig }() pages, err := c.Search(context.Background(), "track", "dreams", 5) if err != nil { t.Fatalf("Search() error = %v", err) } if len(pages) != 1 { t.Fatalf("pages len = %d, want 1", len(pages)) } } func TestGetDownloadableUsesPreview(t *testing.T) { ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { switch r.URL.Path { case "/track/42": _ = json.NewEncoder(w).Encode(map[string]any{"id": 42, "title": "X", "preview": "https://cdn.example/p.mp3"}) default: w.WriteHeader(http.StatusNotFound) } })) defer ts.Close() cfgData := config.DefaultConfigData() c := New(&config.Config{File: cfgData, Session: cfgData}) c.loggedIn = true orig := baseURL baseURL = ts.URL defer func() { baseURL = orig }() d, err := c.GetDownloadable(context.Background(), "42", 0) if err != nil { t.Fatalf("GetDownloadable() error = %v", err) } if d.URL != "https://cdn.example/p.mp3" || d.Extension != "mp3" { t.Fatalf("unexpected downloadable: %+v", d) } }