Files
bjarneo--cliamp/external/ytmusic/provider_test.go
T
2026-08-20 23:17:16 +02:00

64 lines
1.7 KiB
Go

package ytmusic
import (
"testing"
"time"
"github.com/bjarneo/cliamp/playlist"
)
func TestRefreshInvalidatesAllCaches(t *testing.T) {
t.Setenv("HOME", t.TempDir())
b := newBase(nil, "client-id", "client-secret", false)
b.allPlaylists = []playlistEntry{{ID: "p1", Name: "One", TrackCount: 5}}
b.classified = map[string]bool{"p1": true}
b.trackCache["p1"] = []playlist.Track{{Path: "https://example/v", Title: "t"}}
dc := b.ensureDiskCache()
dc.setPlaylists(b.allPlaylists)
dc.setTracks("p1", b.trackCache["p1"])
saveSnapshot(dc.snapshot())
if !dc.playlistsFresh() {
t.Fatal("disk cache should be fresh before refresh")
}
b.refresh()
if b.allPlaylists != nil {
t.Error("allPlaylists not cleared")
}
if b.classified != nil {
t.Error("classified not cleared")
}
if len(b.trackCache) != 0 {
t.Errorf("trackCache not cleared: %d entries", len(b.trackCache))
}
if b.disk.playlistsFresh() {
t.Error("disk cache still reports fresh after refresh")
}
if !b.disk.PlaylistsAt.IsZero() {
t.Errorf("PlaylistsAt should be zero, got %v", b.disk.PlaylistsAt)
}
if len(b.disk.Playlists) != 0 {
t.Errorf("disk Playlists not cleared: %d entries", len(b.disk.Playlists))
}
if len(b.disk.Tracks) != 0 {
t.Errorf("disk Tracks not cleared: %d entries", len(b.disk.Tracks))
}
reloaded := loadYTCache(oauthCacheScope("client-id"))
if reloaded.playlistsFresh() {
t.Error("reloaded disk cache still fresh after refresh")
}
if !reloaded.PlaylistsAt.Equal(time.Time{}) {
t.Errorf("reloaded PlaylistsAt should be zero, got %v", reloaded.PlaylistsAt)
}
if len(reloaded.Tracks) != 0 {
t.Errorf("reloaded disk Tracks not cleared: %d entries", len(reloaded.Tracks))
}
}