mirror of
https://github.com/spotiflacapp/SpotiFLAC-Mobile.git
synced 2026-06-01 03:15:17 +07:00
68 lines
2.2 KiB
Go
68 lines
2.2 KiB
Go
package gobackend
|
|
|
|
import "testing"
|
|
|
|
func TestSetMetadataProviderPriorityAddsBuiltIns(t *testing.T) {
|
|
original := GetMetadataProviderPriority()
|
|
defer SetMetadataProviderPriority(original)
|
|
|
|
SetMetadataProviderPriority([]string{"tidal"})
|
|
got := GetMetadataProviderPriority()
|
|
want := []string{"tidal", "deezer", "qobuz"}
|
|
if len(got) != len(want) {
|
|
t.Fatalf("unexpected priority length: got %v want %v", got, want)
|
|
}
|
|
for i := range want {
|
|
if got[i] != want[i] {
|
|
t.Fatalf("unexpected priority at %d: got %v want %v", i, got, want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestSearchTracksWithMetadataProvidersUsesPriorityAndDedupes(t *testing.T) {
|
|
originalPriority := GetMetadataProviderPriority()
|
|
originalSearch := searchBuiltInMetadataTracksFunc
|
|
defer func() {
|
|
SetMetadataProviderPriority(originalPriority)
|
|
searchBuiltInMetadataTracksFunc = originalSearch
|
|
}()
|
|
|
|
SetMetadataProviderPriority([]string{"qobuz", "tidal", "deezer"})
|
|
|
|
var calls []string
|
|
searchBuiltInMetadataTracksFunc = func(providerID, query string, limit int) ([]ExtTrackMetadata, error) {
|
|
calls = append(calls, providerID)
|
|
switch providerID {
|
|
case "qobuz":
|
|
return []ExtTrackMetadata{
|
|
{ProviderID: "qobuz", SpotifyID: "qobuz:1", ISRC: "AAA111", Name: "First"},
|
|
}, nil
|
|
case "tidal":
|
|
return []ExtTrackMetadata{
|
|
{ProviderID: "tidal", SpotifyID: "tidal:2", ISRC: "AAA111", Name: "Duplicate"},
|
|
{ProviderID: "tidal", SpotifyID: "tidal:3", ISRC: "BBB222", Name: "Second"},
|
|
}, nil
|
|
case "deezer":
|
|
return []ExtTrackMetadata{
|
|
{ProviderID: "deezer", SpotifyID: "deezer:4", ISRC: "CCC333", Name: "Third"},
|
|
}, nil
|
|
default:
|
|
return nil, nil
|
|
}
|
|
}
|
|
|
|
manager := getExtensionManager()
|
|
tracks, err := manager.SearchTracksWithMetadataProviders("query", 3, false)
|
|
if err != nil {
|
|
t.Fatalf("SearchTracksWithMetadataProviders returned error: %v", err)
|
|
}
|
|
if len(tracks) != 3 {
|
|
t.Fatalf("unexpected track count: got %d want 3", len(tracks))
|
|
}
|
|
if tracks[0].ProviderID != "qobuz" || tracks[1].ProviderID != "tidal" || tracks[2].ProviderID != "deezer" {
|
|
t.Fatalf("unexpected track provider order: %+v", tracks)
|
|
}
|
|
if len(calls) != 3 || calls[0] != "qobuz" || calls[1] != "tidal" || calls[2] != "deezer" {
|
|
t.Fatalf("unexpected provider call order: %v", calls)
|
|
}
|
|
}
|