Files
silo-server/internal/recommendations/embeddings/text_test.go
T

56 lines
2.2 KiB
Go

package embeddings
import (
"strings"
"testing"
"github.com/Silo-Server/silo-server/internal/models"
)
func TestBuildEmbeddingTextSortsCrewDeterministically(t *testing.T) {
item := &models.MediaItem{
Title: "Example",
Type: "movie",
People: []models.ItemPerson{
{Person: models.Person{ID: 3, Name: "Charlie"}, Kind: models.PersonKindWriter, SortOrder: 0},
{Person: models.Person{ID: 1, Name: "Alice"}, Kind: models.PersonKindWriter, SortOrder: 0},
{Person: models.Person{ID: 2, Name: "Bob"}, Kind: models.PersonKindWriter, SortOrder: 0},
{Person: models.Person{ID: 5, Name: "Zed"}, Kind: models.PersonKindDirector, SortOrder: 0},
{Person: models.Person{ID: 4, Name: "Ann"}, Kind: models.PersonKindDirector, SortOrder: 0},
},
}
text := BuildEmbeddingText(item)
if !strings.Contains(text, "Directed by Ann, Zed") {
t.Fatalf("director order was not deterministic by name: %q", text)
}
if !strings.Contains(text, "Written by Alice, Bob, Charlie") {
t.Fatalf("writer order was not deterministic by name: %q", text)
}
}
func TestBuildEmbeddingTextSortsActorsBeforeTopFive(t *testing.T) {
item := &models.MediaItem{
Title: "Example",
Type: "movie",
People: []models.ItemPerson{
{Person: models.Person{ID: 6, Name: "F"}, Kind: models.PersonKindActor, Character: "Six", SortOrder: 6},
{Person: models.Person{ID: 2, Name: "B"}, Kind: models.PersonKindActor, Character: "Two", SortOrder: 2},
{Person: models.Person{ID: 1, Name: "A"}, Kind: models.PersonKindActor, Character: "One", SortOrder: 1},
{Person: models.Person{ID: 5, Name: "E"}, Kind: models.PersonKindActor, Character: "Five", SortOrder: 5},
{Person: models.Person{ID: 4, Name: "D"}, Kind: models.PersonKindActor, Character: "Four", SortOrder: 4},
{Person: models.Person{ID: 3, Name: "C"}, Kind: models.PersonKindActor, Character: "Three", SortOrder: 3},
},
}
text := BuildEmbeddingText(item)
if strings.Contains(text, "F as Six") {
t.Fatalf("sixth actor should not be included after sorting: %q", text)
}
if !strings.Contains(text, "Cast: A as One, B as Two, C as Three, D as Four, E as Five") {
t.Fatalf("actor order was not deterministic by sort order: %q", text)
}
}