feat(server/m7-352): system mix helpers (tieBreakHash, pickSeedArtists)
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
package playlists
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/jackc/pgx/v5/pgtype"
|
||||
)
|
||||
|
||||
// pickSeedArtistsFromRows is the pure helper that turns sqlc rows into
|
||||
// the seed list. The DB-level query is exercised in system_test.go's
|
||||
// integration test; this unit test pins the post-fetch logic.
|
||||
|
||||
func TestPickSeedArtistsFromRows_PreservesOrder(t *testing.T) {
|
||||
mk := func(b byte, score int64) seedArtistRow {
|
||||
return seedArtistRow{
|
||||
ArtistID: pgtype.UUID{Bytes: [16]byte{b}, Valid: true},
|
||||
Score: score,
|
||||
}
|
||||
}
|
||||
// Caller (SQL) already orders + limits; helper preserves order.
|
||||
rows := []seedArtistRow{mk(1, 100), mk(2, 50), mk(3, 25)}
|
||||
got := pickSeedArtistsFromRows(rows)
|
||||
if len(got) != 3 {
|
||||
t.Fatalf("len: got %d, want 3", len(got))
|
||||
}
|
||||
if got[0].Bytes[0] != 1 || got[1].Bytes[0] != 2 || got[2].Bytes[0] != 3 {
|
||||
t.Errorf("expected [1,2,3] preserving input order; got %v", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPickSeedArtistsFromRows_FewerThanThree(t *testing.T) {
|
||||
mk := func(b byte, score int64) seedArtistRow {
|
||||
return seedArtistRow{ArtistID: pgtype.UUID{Bytes: [16]byte{b}, Valid: true}, Score: score}
|
||||
}
|
||||
rows := []seedArtistRow{mk(1, 100)}
|
||||
got := pickSeedArtistsFromRows(rows)
|
||||
if len(got) != 1 {
|
||||
t.Errorf("len: got %d, want 1", len(got))
|
||||
}
|
||||
}
|
||||
|
||||
func TestPickSeedArtistsFromRows_Empty(t *testing.T) {
|
||||
got := pickSeedArtistsFromRows(nil)
|
||||
if len(got) != 0 {
|
||||
t.Errorf("empty input should yield empty output; got %v", got)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user