Files
memby/server/internal/api/my_shows_test.go
T

64 lines
1.8 KiB
Go

package api
import (
"testing"
"github.com/ponzischeme89/memby/server/internal/sonarr"
"github.com/ponzischeme89/memby/server/internal/store"
)
func TestMatchSonarrSeriesUsesNormalizedTitleAndYear(t *testing.T) {
year := 2026
all := []sonarr.Series{
{ID: 1, Title: "The Other Show", Year: 2026},
{ID: 2, Title: "Northbound: NZ", Year: 2026},
}
got := matchSonarrSeries(store.UserShow{Title: "Northbound - NZ", Year: &year}, all)
if got == nil || got.ID != 2 {
t.Fatalf("match = %+v, want series 2", got)
}
}
func TestSeriesLifecycleUsesViewerFacingStates(t *testing.T) {
tests := map[string]string{
"continuing": "Continuing",
"upcoming": "Continuing",
"ended": "Cancelled",
"deleted": "Cancelled",
"": "Unknown",
}
for input, want := range tests {
if got := seriesLifecycle(input); got != want {
t.Errorf("seriesLifecycle(%q) = %q, want %q", input, got, want)
}
}
}
func TestContinuingSonarrStatus(t *testing.T) {
for _, status := range []string{"continuing", "Continuing", "upcoming"} {
if !isContinuingSonarrStatus(status) {
t.Errorf("%q should auto-follow", status)
}
}
for _, status := range []string{"ended", "deleted", ""} {
if isContinuingSonarrStatus(status) {
t.Errorf("%q should not auto-follow", status)
}
}
}
func TestAutoFollowStartsHalfwayThroughEpisode(t *testing.T) {
if shouldAutoFollowShow("started", 900, 1_000) {
t.Fatal("starting or resuming playback must not auto-follow")
}
if shouldAutoFollowShow("progress", 499, 1_000) {
t.Fatal("less than half an episode must not auto-follow")
}
if !shouldAutoFollowShow("progress", 500, 1_000) {
t.Fatal("half an episode should auto-follow")
}
if shouldAutoFollowShow("progress", 500, 0) {
t.Fatal("unknown durations must not auto-follow")
}
}