package adminfinance import ( "encoding/json" "os" "testing" "time" "hfb_sys/backend/internal/timeutil" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/logger" ) func TestProfileDashboardOnMySQL(t *testing.T) { dsn := os.Getenv("HFB_ADMIN_FINANCE_TEST_DSN") if dsn == "" { t.Skip("profile only") } db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{Logger: logger.Default.LogMode(logger.Info)}) if err != nil { t.Fatal(err) } now := timeutil.ShanghaiNow() started := time.Now() result, err := NewRepository(db).Dashboard(t.Context(), DashboardQuery{ StartDate: time.Date(now.Year(), now.Month(), now.Day()-6, 0, 0, 0, 0, timeutil.ShanghaiLocation()), EndDate: time.Date(now.Year(), now.Month(), now.Day(), 23, 59, 59, 999999999, timeutil.ShanghaiLocation()), }) if err != nil { t.Fatal(err) } t.Logf("dashboard duration=%s daily_items=%d", time.Since(started), len(result.DailyItems)) if output := os.Getenv("HFB_ADMIN_FINANCE_PROFILE_OUTPUT"); output != "" { result.GeneratedAt = time.Time{} data, err := json.MarshalIndent(result, "", " ") if err != nil { t.Fatal(err) } if err := os.WriteFile(output, data, 0o600); err != nil { t.Fatal(err) } } }