0.3.49
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"testing"
|
||||
|
||||
"github.com/ponzischeme89/memby/server/internal/recommend"
|
||||
"github.com/ponzischeme89/memby/server/internal/store"
|
||||
)
|
||||
|
||||
func TestRowLayoutOverridesReadsEveryPage(t *testing.T) {
|
||||
policy := store.FeaturePolicy{Values: map[string]json.RawMessage{
|
||||
"home.sectionDefinitions": json.RawMessage(`[
|
||||
{"id":"favorites","type":"favorites","title":"Favourites","component":"mediaRow","layout":"thumb"},
|
||||
{"id":"continue","type":"continueWatching","title":"Continue","component":"mediaRow"},
|
||||
{"id":"broken","type":"custom","title":"x","component":"mediaRow","layout":"sideways"}
|
||||
]`),
|
||||
"movies.sectionDefinitions": json.RawMessage(`[
|
||||
{"id":"library","type":"library","title":"Library","component":"mediaGrid","layout":"poster"}
|
||||
]`),
|
||||
}}
|
||||
got := rowLayoutOverrides(policy)
|
||||
if got["favorites"] != "thumb" {
|
||||
t.Fatalf("favorites layout = %q, want thumb", got["favorites"])
|
||||
}
|
||||
if got["library"] != "poster" {
|
||||
t.Fatalf("library layout = %q, want poster", got["library"])
|
||||
}
|
||||
if _, ok := got["continue"]; ok {
|
||||
t.Fatalf("a row with no layout must not appear as an override")
|
||||
}
|
||||
if _, ok := got["broken"]; ok {
|
||||
t.Fatalf("an invalid layout must not appear as an override")
|
||||
}
|
||||
}
|
||||
|
||||
func TestApplyRowLayoutOverridesMatchesExactAndChildRows(t *testing.T) {
|
||||
rows := []recommend.Row{
|
||||
{ID: "favorites"},
|
||||
{ID: "for-you"},
|
||||
{ID: "for-you:home:evening"},
|
||||
{ID: "latest-movies", Layout: "poster"},
|
||||
}
|
||||
out := applyRowLayoutOverrides(rows, map[string]string{"favorites": "thumb", "for-you": "poster"})
|
||||
if out[0].Layout != "thumb" {
|
||||
t.Fatalf("exact match not applied: %q", out[0].Layout)
|
||||
}
|
||||
if out[1].Layout != "poster" || out[2].Layout != "poster" {
|
||||
t.Fatalf("a section id must pin its child rows too: %q / %q", out[1].Layout, out[2].Layout)
|
||||
}
|
||||
if out[3].Layout != "poster" {
|
||||
t.Fatalf("a row that already carries a layout must be left alone: %q", out[3].Layout)
|
||||
}
|
||||
}
|
||||
|
||||
func TestApplyRowLayoutOverridesNoOpWithoutOverrides(t *testing.T) {
|
||||
rows := []recommend.Row{{ID: "favorites"}}
|
||||
if applyRowLayoutOverrides(rows, nil)[0].Layout != "" {
|
||||
t.Fatalf("no overrides must leave rows untouched")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user