- Forward start, pause, resume, and stop events with stable media identities - Persist and retry terminal scrobbles across teardown and restart paths - Reject ambiguous playback-report route matches
45 lines
1.4 KiB
Go
45 lines
1.4 KiB
Go
package watchsync
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/Silo-Server/silo-server/internal/userstore"
|
|
)
|
|
|
|
type fixedScrobbleIdentityResolver struct {
|
|
identity userstore.WatchIdentity
|
|
}
|
|
|
|
func (r fixedScrobbleIdentityResolver) ResolveHistoryIdentity(context.Context, string) userstore.WatchIdentity {
|
|
return r.identity
|
|
}
|
|
|
|
func TestResolveScrobbleIdentityEpisode(t *testing.T) {
|
|
season := 2
|
|
episode := 7
|
|
event := ResolveScrobbleIdentity(context.Background(), fixedScrobbleIdentityResolver{
|
|
identity: userstore.WatchIdentity{
|
|
StableType: "episode",
|
|
ProviderIDs: map[string]string{"tmdb": "episode-tmdb"},
|
|
SeriesProviderIDs: map[string]string{"tvdb": "series-tvdb"},
|
|
Season: &season,
|
|
Episode: &episode,
|
|
},
|
|
}, ScrobbleEvent{MediaItemID: "episode-1"})
|
|
|
|
if event.Kind != "episode" || event.TMDBID != "episode-tmdb" || event.SeriesTVDBID != "series-tvdb" {
|
|
t.Fatalf("resolved identity = %+v", event)
|
|
}
|
|
if event.SeasonNumber != season || event.EpisodeNumber != episode {
|
|
t.Fatalf("resolved episode numbers = S%dE%d, want S%dE%d", event.SeasonNumber, event.EpisodeNumber, season, episode)
|
|
}
|
|
}
|
|
|
|
func TestResolveScrobbleIdentityDefaultsUnknownItemToMovie(t *testing.T) {
|
|
event := ResolveScrobbleIdentity(context.Background(), nil, ScrobbleEvent{MediaItemID: "movie-1"})
|
|
if event.Kind != "movie" {
|
|
t.Fatalf("kind = %q, want movie", event.Kind)
|
|
}
|
|
}
|