Files
MeBox/internal/service/discover_section_cache_test.go
T
2026-06-30 20:18:02 +08:00

45 lines
1.2 KiB
Go

package service
import (
"testing"
"time"
)
func TestDiscoverSectionCacheReturnsClone(t *testing.T) {
cache := NewDiscoverSectionCache(time.Hour)
cache.Set("douban_hot_movie", 1, []ExternalMediaResult{{
Title: "第一部",
SubscribeAliases: []string{"别名"},
MissingEpisodes: []int{1},
Languages: []string{"zh"},
}})
got, ok := cache.Get("douban_hot_movie", 1)
if !ok || len(got) != 1 || got[0].Title != "第一部" {
t.Fatalf("cached section = %#v, %v", got, ok)
}
got[0].Title = "被修改"
got[0].SubscribeAliases[0] = "别名被改"
got[0].MissingEpisodes[0] = 9
got[0].Languages[0] = "en"
again, ok := cache.Get("douban_hot_movie", 1)
if !ok ||
again[0].Title != "第一部" ||
again[0].SubscribeAliases[0] != "别名" ||
again[0].MissingEpisodes[0] != 1 ||
again[0].Languages[0] != "zh" {
t.Fatalf("cache should return a clone, got %#v", again)
}
}
func TestDiscoverSectionCacheExpires(t *testing.T) {
cache := NewDiscoverSectionCache(time.Nanosecond)
cache.Set("tmdb_latest_movie", 1, []ExternalMediaResult{{Title: "旧数据"}})
time.Sleep(time.Millisecond)
if got, ok := cache.Get("tmdb_latest_movie", 1); ok || len(got) != 0 {
t.Fatalf("expired cache should miss, got %#v", got)
}
}