package roomturnoverreward import ( "context" "testing" ) func TestGetPublicPageReturnsEnabledLevelsAndPeriod(t *testing.T) { service, _ := newTestService(t) ctx := context.Background() if _, err := service.SaveConfig(ctx, SaveRoomTurnoverRewardConfigRequest{ SysOrigin: "LIKEI", Enabled: true, Timezone: "Asia/Riyadh", LevelConfigs: []RoomTurnoverRewardLevelInput{ {Level: 2, TurnoverThreshold: 7000000, RewardGold: 350000, Enabled: true}, {Level: 1, TurnoverThreshold: 1000000, RewardGold: 50000, Enabled: false}, }, }); err != nil { t.Fatalf("SaveConfig() error = %v", err) } resp, err := service.GetPublicPage(ctx, "likei") if err != nil { t.Fatalf("GetPublicPage() error = %v", err) } if resp.ActivityStatus != roomTurnoverRewardActivityStatusOngoing { t.Fatalf("activityStatus = %q, want %q", resp.ActivityStatus, roomTurnoverRewardActivityStatusOngoing) } if resp.CycleKey == "" || resp.PeriodStartAt == "" || resp.PeriodEndAt == "" || resp.CurrentPeriodText == "" { t.Fatalf("period fields are incomplete: %+v", resp) } if resp.CountdownMillis <= 0 { t.Fatalf("countdownMillis = %d, want > 0", resp.CountdownMillis) } if len(resp.LevelConfigs) != 1 { t.Fatalf("level count = %d, want 1", len(resp.LevelConfigs)) } if got := resp.LevelConfigs[0]; got.TurnoverThreshold != 7000000 || got.RewardGold != 350000 { t.Fatalf("level = %+v, want 7M/350k", got) } if resp.HighlightRewardGold != 350000 { t.Fatalf("highlightRewardGold = %d, want 350000", resp.HighlightRewardGold) } } func TestGetPublicPageFallsBackToDefaultLevelsWhenMissing(t *testing.T) { service, _ := newTestService(t) resp, err := service.GetPublicPage(context.Background(), "") if err != nil { t.Fatalf("GetPublicPage() error = %v", err) } if resp.ActivityStatus != roomTurnoverRewardActivityStatusDisabled { t.Fatalf("activityStatus = %q, want disabled", resp.ActivityStatus) } if len(resp.LevelConfigs) != 4 { t.Fatalf("level count = %d, want 4", len(resp.LevelConfigs)) } if resp.HighlightRewardGold != 250000 { t.Fatalf("highlightRewardGold = %d, want 250000", resp.HighlightRewardGold) } }