56 lines
1.4 KiB
Go
56 lines
1.4 KiB
Go
package proto
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"testing"
|
|
)
|
|
|
|
func TestProductResUIConfigJSONContract(t *testing.T) {
|
|
response := ProductRes{
|
|
UIConfig: &VIPCardUIConfig{
|
|
BackgroundImage: "vip-card-skin-a.png",
|
|
BadgeStyles: []VIPCardBadgeStyle{{
|
|
BadgeType: "MOST_POPULAR",
|
|
BackgroundColor: "#2B251A",
|
|
TextColor: "#F7D98C",
|
|
}},
|
|
},
|
|
}
|
|
data, err := json.Marshal(response)
|
|
if err != nil {
|
|
t.Fatalf("json.Marshal() error = %v", err)
|
|
}
|
|
for _, field := range [][]byte{
|
|
[]byte(`"uiConfig"`),
|
|
[]byte(`"backgroundImage":"vip-card-skin-a.png"`),
|
|
[]byte(`"badgeType":"MOST_POPULAR"`),
|
|
[]byte(`"backgroundColor":"#2B251A"`),
|
|
[]byte(`"textColor":"#F7D98C"`),
|
|
} {
|
|
if !bytes.Contains(data, field) {
|
|
t.Fatalf("JSON response missing %s: %s", field, data)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestProductResOmitsEmptyUIConfig(t *testing.T) {
|
|
data, err := json.Marshal(ProductRes{})
|
|
if err != nil {
|
|
t.Fatalf("json.Marshal() error = %v", err)
|
|
}
|
|
if bytes.Contains(data, []byte(`"uiConfig"`)) {
|
|
t.Fatalf("legacy JSON response contains uiConfig: %s", data)
|
|
}
|
|
}
|
|
|
|
func TestProductResIncludesExperimentStatus(t *testing.T) {
|
|
data, err := json.Marshal(ProductRes{ExperimentStatus: "DISABLED"})
|
|
if err != nil {
|
|
t.Fatalf("json.Marshal() error = %v", err)
|
|
}
|
|
if !bytes.Contains(data, []byte(`"experimentStatus":"DISABLED"`)) {
|
|
t.Fatalf("JSON response missing experimentStatus: %s", data)
|
|
}
|
|
}
|