2026-05-16 06:13:15 +08:00

184 lines
5.3 KiB
Go

package voiceroomrocket
import (
"context"
"testing"
)
func TestSaveLevelConfigsPersistsPreviewRocketURL(t *testing.T) {
service, _ := newTestService(t)
ctx := context.Background()
saved, err := service.SaveLevelConfigs(ctx, SaveLevelConfigsRequest{
SysOrigin: "LIKEI",
Levels: []LevelConfigPayload{
{
Level: 1,
NeedEnergy: 100,
ShakeThresholdPercent: "95.0000",
PreviewRocketURL: "https://cdn.example.com/preview-rocket.png",
RocketIconURL: "https://cdn.example.com/rocket-icon.png",
RocketAnimationURL: "https://cdn.example.com/rocket-launch.svga",
Enabled: true,
Sort: 1,
},
},
})
if err != nil {
t.Fatalf("SaveLevelConfigs error = %v", err)
}
if len(saved) != 1 {
t.Fatalf("saved level count = %d, want 1", len(saved))
}
if saved[0].PreviewRocketURL != "https://cdn.example.com/preview-rocket.png" {
t.Fatalf("previewRocketUrl = %q", saved[0].PreviewRocketURL)
}
listed, err := service.ListLevelConfigs(ctx, "LIKEI")
if err != nil {
t.Fatalf("ListLevelConfigs error = %v", err)
}
if len(listed) != 1 || listed[0].PreviewRocketURL != saved[0].PreviewRocketURL {
t.Fatalf("listed levels = %+v", listed)
}
}
func TestGetStatusReturnsRocketResourcesToApp(t *testing.T) {
service, _ := newTestService(t)
ctx := context.Background()
if _, err := service.SaveAdminConfig(ctx, SaveConfigRequest{
SysOrigin: "LIKEI",
Enabled: true,
}); err != nil {
t.Fatalf("SaveAdminConfig error = %v", err)
}
_, err := service.SaveLevelConfigs(ctx, SaveLevelConfigsRequest{
SysOrigin: "LIKEI",
Levels: []LevelConfigPayload{
{
Level: 1,
NeedEnergy: 100,
ShakeThresholdPercent: "95.0000",
PreviewRocketURL: "https://cdn.example.com/preview-rocket.png",
RocketIconURL: "https://cdn.example.com/rocket-icon.png",
RocketAnimationURL: "https://cdn.example.com/rocket-launch.svga",
Enabled: true,
Sort: 1,
},
},
})
if err != nil {
t.Fatalf("SaveLevelConfigs error = %v", err)
}
status, err := service.GetStatus(ctx, AuthUser{SysOrigin: "LIKEI"}, 9001)
if err != nil {
t.Fatalf("GetStatus error = %v", err)
}
if status.PreviewRocketURL != "https://cdn.example.com/preview-rocket.png" {
t.Fatalf("status previewRocketUrl = %q", status.PreviewRocketURL)
}
if status.RocketIconURL != "https://cdn.example.com/rocket-icon.png" {
t.Fatalf("status rocketIconUrl = %q", status.RocketIconURL)
}
if status.RocketAnimationURL != "https://cdn.example.com/rocket-launch.svga" {
t.Fatalf("status rocketAnimationUrl = %q", status.RocketAnimationURL)
}
if len(status.Levels) != 1 || status.Levels[0].PreviewRocketURL != status.PreviewRocketURL {
t.Fatalf("status levels = %+v", status.Levels)
}
}
func TestGetLevelContentsReturnsEveryLevelRewards(t *testing.T) {
service, _ := newTestService(t)
ctx := context.Background()
_, err := service.SaveLevelConfigs(ctx, SaveLevelConfigsRequest{
SysOrigin: "LIKEI",
Levels: []LevelConfigPayload{
{
Level: 1,
NeedEnergy: 100,
ShakeThresholdPercent: "95.0000",
PreviewRocketURL: "https://cdn.example.com/lv1.png",
Enabled: true,
Sort: 1,
},
{
Level: 2,
NeedEnergy: 200,
ShakeThresholdPercent: "95.0000",
PreviewRocketURL: "https://cdn.example.com/lv2.png",
Enabled: true,
Sort: 2,
},
},
})
if err != nil {
t.Fatalf("SaveLevelConfigs error = %v", err)
}
_, err = service.SaveRewardConfigs(ctx, SaveRewardConfigsRequest{
SysOrigin: "LIKEI",
Rewards: []RewardConfigPayload{
{
Level: 1,
RewardScene: rewardSceneTop1,
RewardType: rewardTypeGold,
RewardName: "Lv1 top1",
RewardAmount: 100,
Enabled: true,
Sort: 1,
},
{
Level: 2,
RewardScene: rewardSceneIgnite,
RewardType: rewardTypeGold,
RewardName: "Lv2 ignite",
RewardAmount: 200,
Enabled: true,
Sort: 1,
},
{
Level: 2,
RewardScene: rewardSceneInRoom,
RewardType: rewardTypeNone,
RewardName: "轮空",
Enabled: true,
Sort: 2,
},
},
})
if err != nil {
t.Fatalf("SaveRewardConfigs error = %v", err)
}
resp, err := service.GetLevelContents(ctx, AuthUser{SysOrigin: "LIKEI"})
if err != nil {
t.Fatalf("GetLevelContents error = %v", err)
}
if len(resp.Levels) != 2 {
t.Fatalf("level count = %d, want 2", len(resp.Levels))
}
levels := map[int]LevelContentPayload{}
for _, item := range resp.Levels {
levels[item.Level] = item
}
if levels[1].PreviewRocketURL != "https://cdn.example.com/lv1.png" {
t.Fatalf("level 1 previewRocketUrl = %q", levels[1].PreviewRocketURL)
}
if got := levels[1].RewardPreview.Top1; len(got) != 1 || got[0].RewardName != "Lv1 top1" {
t.Fatalf("level 1 top1 preview = %+v", got)
}
if got := levels[2].RewardPreview.Ignite; len(got) != 1 || got[0].RewardName != "Lv2 ignite" {
t.Fatalf("level 2 ignite preview = %+v", got)
}
if len(levels[2].Rewards) != 2 {
t.Fatalf("level 2 rewards = %+v", levels[2].Rewards)
}
if len(levels[2].RewardPreview.InRoom) != 0 {
t.Fatalf("NONE reward should not appear in preview: %+v", levels[2].RewardPreview.InRoom)
}
}