2026-05-14 17:44:16 +08:00

56 lines
1.7 KiB
Go

package levelconfig
import (
"testing"
activityv1 "hyapp.local/api/proto/activity/v1"
)
func TestMergeLongBadgeResourceIDPreservesDisplayConfig(t *testing.T) {
badgeID := int64(9001)
raw, err := mergeLongBadgeResourceID(`{"theme":"gold"}`, &badgeID)
if err != nil {
t.Fatalf("mergeLongBadgeResourceID failed: %v", err)
}
if got := longBadgeResourceID(raw); got != badgeID {
t.Fatalf("long badge id mismatch: got=%d raw=%s", got, raw)
}
config, err := objectFromJSON(raw)
if err != nil {
t.Fatalf("objectFromJSON failed: %v", err)
}
if config["theme"] != "gold" {
t.Fatalf("display config field lost: %+v", config)
}
}
func TestConfigFromProtoGroupsRulesAndTiers(t *testing.T) {
resp := &activityv1.ListLevelConfigResponse{
Tracks: []*activityv1.LevelTrack{{Track: "wealth", Name: "财富等级", Status: "active"}},
Rules: []*activityv1.LevelRule{{
Track: "wealth",
Level: 3,
RequiredValue: 300,
DisplayConfigJson: `{"long_badge_resource_id":7003}`,
}},
Tiers: []*activityv1.LevelTier{{
TierId: 11,
Track: "wealth",
MinLevel: 1,
MaxLevel: 10,
DisplayBadgeResourceId: 9001,
}},
ServerTimeMs: 123,
}
dto := configFromProto(resp)
if len(dto.Tracks) != 1 || dto.Tracks[0].Track != "wealth" {
t.Fatalf("track grouping mismatch: %+v", dto.Tracks)
}
if len(dto.Tracks[0].Rules) != 1 || dto.Tracks[0].Rules[0].LongBadgeResourceID != 7003 {
t.Fatalf("rule long badge mismatch: %+v", dto.Tracks[0].Rules)
}
if len(dto.Tracks[0].Tiers) != 1 || dto.Tracks[0].Tiers[0].DisplayBadgeResourceID != 9001 {
t.Fatalf("tier grouping mismatch: %+v", dto.Tracks[0].Tiers)
}
}