package databi import ( "testing" "time" "hyapp-admin-server/internal/model" "hyapp-admin-server/internal/repository" ) func testAccess() repository.MoneyAccess { return repository.MoneyAccess{ UserID: 7, Scopes: []model.UserMoneyScope{ {UserID: 7, AppCode: "lalu", RegionID: 0}, {UserID: 7, AppCode: "aslan", RegionID: 11}, {UserID: 7, AppCode: "aslan", RegionID: 12}, }, } } func mustLocation(t *testing.T, name string) *time.Location { t.Helper() location, err := time.LoadLocation(name) if err != nil { t.Fatalf("load location %s: %v", name, err) } return location } func TestRegionDisplay(t *testing.T) { regions := []RegionInfo{{AppCode: "aslan", RegionID: 11, RegionCode: "MENA", RegionName: "中东"}} if _, name := regionDisplay(regions, 0); name != "全部区域" { t.Fatalf("expected 全部区域 for region 0, got %s", name) } if code, name := regionDisplay(regions, 11); code != "MENA" || name != "中东" { t.Fatalf("unexpected display for region 11: %s %s", code, name) } if _, name := regionDisplay(regions, 99); name != "区域 99" { t.Fatalf("expected fallback name for unknown region, got %s", name) } } func TestTopLevelMetricsStripsStructuralKeys(t *testing.T) { out := topLevelMetrics(map[string]any{ "recharge_usd_minor": int64(5), "daily_series": []any{"x"}, "country_breakdown": []any{"y"}, "daily_country_breakdown": []any{"z"}, "report_metric_sources": []any{}, }) if _, ok := out["daily_series"]; ok { t.Fatalf("expected daily_series stripped") } if out["recharge_usd_minor"] != int64(5) { t.Fatalf("expected metric kept, got %v", out["recharge_usd_minor"]) } } // legacy 雪花区域 ID 超出 JS 安全整数,历史 scope 里存的是 float64 圆整值; // 归一与展示必须能容差还原(线上「区域 20453...600」事故的回归测试)。 func TestRegionDisplayToleratesRoundedIDs(t *testing.T) { exact := int64(2049084769873498113) rounded := int64(float64(exact)) if exact == rounded { t.Fatalf("fixture should lose precision") } regions := []RegionInfo{{AppCode: "aslan", RegionID: exact, RegionCode: "AR", RegionName: "阿语区"}} if _, name := regionDisplay(regions, rounded); name != "阿语区" { t.Fatalf("expected rounded id to resolve region name, got %s", name) } if got := normalizeRegionID(regions, rounded); got != exact { t.Fatalf("expected normalize to exact id, got %d", got) } if !regionInCatalog(regions, rounded) { t.Fatalf("expected rounded id to match catalog") } }