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() _, 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) } }