This commit is contained in:
ponzischeme89
2026-08-22 11:32:50 +12:00
parent b131932a4e
commit f982d391b9
40 changed files with 25594 additions and 9575 deletions
+17 -9
View File
@@ -5,6 +5,7 @@ import (
"encoding/json"
"errors"
"fmt"
"strings"
"time"
"github.com/jackc/pgx/v5"
@@ -15,12 +16,14 @@ import (
const MetadataHeroSettingsKey = "metadata_hero_settings"
const (
MetadataHeroTitle = "title"
MetadataHeroRatings = "ratings"
MetadataHeroFacts = "facts"
MetadataHeroSummary = "summary"
MetadataHeroReason = "recommendation_reason"
MetadataHeroTime = "time_remaining"
MetadataHeroTitle = "title"
MetadataHeroRatings = "ratings"
MetadataHeroFacts = "facts"
MetadataHeroSummary = "summary"
MetadataHeroReason = "recommendation_reason"
MetadataHeroTime = "time_remaining"
MetadataHeroTimeRemainingColourGreen = "green"
MetadataHeroTimeRemainingColourWhite = "white"
)
var DefaultMetadataHeroContentOrder = []string{
@@ -43,9 +46,10 @@ var MetadataHeroContentOptions = []string{
// outside user preferences because the hero is part of the product's shared composition,
// not something that should change when the viewer changes.
type MetadataHeroSettings struct {
ContentOrder []string `json:"contentOrder"`
UpdatedAt time.Time `json:"updatedAt"`
UpdatedBy string `json:"updatedBy,omitempty"`
ContentOrder []string `json:"contentOrder"`
TimeRemainingColour string `json:"timeRemainingColour"`
UpdatedAt time.Time `json:"updatedAt"`
UpdatedBy string `json:"updatedBy,omitempty"`
}
func NormalizeMetadataHeroSettings(settings MetadataHeroSettings) MetadataHeroSettings {
@@ -62,6 +66,10 @@ func NormalizeMetadataHeroSettings(settings MetadataHeroSettings) MetadataHeroSe
order = append([]string(nil), DefaultMetadataHeroContentOrder...)
}
settings.ContentOrder = order
settings.TimeRemainingColour = strings.ToLower(strings.TrimSpace(settings.TimeRemainingColour))
if settings.TimeRemainingColour != MetadataHeroTimeRemainingColourWhite {
settings.TimeRemainingColour = MetadataHeroTimeRemainingColourGreen
}
return settings
}
@@ -35,3 +35,15 @@ func TestNormalizeMetadataHeroSettingsAcceptsOptionalContent(t *testing.T) {
t.Fatalf("content order = %v, want %v", got, want)
}
}
func TestNormalizeMetadataHeroSettingsNormalisesTimeRemainingColour(t *testing.T) {
if got := NormalizeMetadataHeroSettings(MetadataHeroSettings{}).TimeRemainingColour; got != MetadataHeroTimeRemainingColourGreen {
t.Fatalf("default time remaining colour = %q, want green", got)
}
if got := NormalizeMetadataHeroSettings(MetadataHeroSettings{TimeRemainingColour: " WHITE "}).TimeRemainingColour; got != MetadataHeroTimeRemainingColourWhite {
t.Fatalf("time remaining colour = %q, want white", got)
}
if got := NormalizeMetadataHeroSettings(MetadataHeroSettings{TimeRemainingColour: "orange"}).TimeRemainingColour; got != MetadataHeroTimeRemainingColourGreen {
t.Fatalf("unknown time remaining colour = %q, want green", got)
}
}