Files
SEEN/backend/internal/services/catalog/service_test.go
T
2026-04-10 12:06:24 +02:00

117 lines
2.4 KiB
Go

package catalog
import (
"testing"
"github.com/google/uuid"
)
func TestDiscoverFilters(t *testing.T) {
svc := NewService()
sections := svc.Discover(DiscoverParams{
Page: 1,
PageSize: 3,
Genre: "Sci-Fi",
MediaType: "movie",
})
if len(sections) == 0 {
t.Fatalf("expected non-empty discover sections")
}
for _, section := range sections {
for _, item := range section.Items {
if item.Type != MediaTypeMovie {
t.Fatalf("expected movie item, got %s", item.Type)
}
}
}
}
func TestDiscoverSupportsGames(t *testing.T) {
svc := NewService()
sections := svc.Discover(DiscoverParams{
Page: 1,
PageSize: 4,
MediaType: "game",
})
if len(sections) == 0 {
t.Fatalf("expected game sections")
}
for _, section := range sections {
for _, item := range section.Items {
if item.Type != MediaTypeGame {
t.Fatalf("expected game item, got %s", item.Type)
}
}
}
}
func TestSearch(t *testing.T) {
svc := NewService()
results := svc.Search(SearchParams{Query: "zero", MediaType: "all"})
if len(results) == 0 {
t.Fatalf("expected search results")
}
if results[0].Title != "Zero Meridian" {
t.Fatalf("expected top result Zero Meridian, got %s", results[0].Title)
}
}
func TestSearchGames(t *testing.T) {
svc := NewService()
results := svc.Search(SearchParams{Query: "ghostline", MediaType: "game"})
if len(results) == 0 {
t.Fatalf("expected game search results")
}
if results[0].MediaType != string(MediaTypeGame) {
t.Fatalf("expected game result, got %s", results[0].MediaType)
}
}
func TestUpdateProgressInMemory(t *testing.T) {
svc := NewService()
userID := uuid.New()
updated, err := svc.UpdateProgress(userID, ProgressUpdateInput{
MediaID: 2,
SeasonNumber: 1,
EpisodeNumber: 7,
ProgressPercent: 100,
})
if err != nil {
t.Fatalf("expected update to succeed, got error: %v", err)
}
for _, entry := range updated {
if entry.Item.ID == 2 &&
entry.Progress.SeasonNumber == 1 &&
entry.Progress.EpisodeNumber == 7 {
t.Fatalf("expected completed progress to be excluded from continue watching")
}
}
}
func TestDashboardIncludesGameBacklog(t *testing.T) {
svc := NewService()
payload := svc.Dashboard()
if len(payload.GameBacklog) == 0 {
t.Fatalf("expected dashboard game backlog")
}
for _, item := range payload.GameBacklog {
if item.Type != MediaTypeGame {
t.Fatalf("expected game backlog item, got %s", item.Type)
}
}
}