mirror of
https://gitee.com/wanwujie/sub2api
synced 2026-04-03 23:12:14 +08:00
98 lines
2.9 KiB
Go
98 lines
2.9 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"testing"
|
|
)
|
|
|
|
func TestGetOpsAdvancedSettings_DefaultHidesOpenAITokenStats(t *testing.T) {
|
|
repo := newRuntimeSettingRepoStub()
|
|
svc := &OpsService{settingRepo: repo}
|
|
|
|
cfg, err := svc.GetOpsAdvancedSettings(context.Background())
|
|
if err != nil {
|
|
t.Fatalf("GetOpsAdvancedSettings() error = %v", err)
|
|
}
|
|
if cfg.DisplayOpenAITokenStats {
|
|
t.Fatalf("DisplayOpenAITokenStats = true, want false by default")
|
|
}
|
|
if !cfg.DisplayAlertEvents {
|
|
t.Fatalf("DisplayAlertEvents = false, want true by default")
|
|
}
|
|
if repo.setCalls != 1 {
|
|
t.Fatalf("expected defaults to be persisted once, got %d", repo.setCalls)
|
|
}
|
|
}
|
|
|
|
func TestUpdateOpsAdvancedSettings_PersistsOpenAITokenStatsVisibility(t *testing.T) {
|
|
repo := newRuntimeSettingRepoStub()
|
|
svc := &OpsService{settingRepo: repo}
|
|
|
|
cfg := defaultOpsAdvancedSettings()
|
|
cfg.DisplayOpenAITokenStats = true
|
|
cfg.DisplayAlertEvents = false
|
|
|
|
updated, err := svc.UpdateOpsAdvancedSettings(context.Background(), cfg)
|
|
if err != nil {
|
|
t.Fatalf("UpdateOpsAdvancedSettings() error = %v", err)
|
|
}
|
|
if !updated.DisplayOpenAITokenStats {
|
|
t.Fatalf("DisplayOpenAITokenStats = false, want true")
|
|
}
|
|
if updated.DisplayAlertEvents {
|
|
t.Fatalf("DisplayAlertEvents = true, want false")
|
|
}
|
|
|
|
reloaded, err := svc.GetOpsAdvancedSettings(context.Background())
|
|
if err != nil {
|
|
t.Fatalf("GetOpsAdvancedSettings() after update error = %v", err)
|
|
}
|
|
if !reloaded.DisplayOpenAITokenStats {
|
|
t.Fatalf("reloaded DisplayOpenAITokenStats = false, want true")
|
|
}
|
|
if reloaded.DisplayAlertEvents {
|
|
t.Fatalf("reloaded DisplayAlertEvents = true, want false")
|
|
}
|
|
}
|
|
|
|
func TestGetOpsAdvancedSettings_BackfillsNewDisplayFlagsFromDefaults(t *testing.T) {
|
|
repo := newRuntimeSettingRepoStub()
|
|
svc := &OpsService{settingRepo: repo}
|
|
|
|
legacyCfg := map[string]any{
|
|
"data_retention": map[string]any{
|
|
"cleanup_enabled": false,
|
|
"cleanup_schedule": "0 2 * * *",
|
|
"error_log_retention_days": 30,
|
|
"minute_metrics_retention_days": 30,
|
|
"hourly_metrics_retention_days": 30,
|
|
},
|
|
"aggregation": map[string]any{
|
|
"aggregation_enabled": false,
|
|
},
|
|
"ignore_count_tokens_errors": true,
|
|
"ignore_context_canceled": true,
|
|
"ignore_no_available_accounts": false,
|
|
"ignore_invalid_api_key_errors": false,
|
|
"auto_refresh_enabled": false,
|
|
"auto_refresh_interval_seconds": 30,
|
|
}
|
|
raw, err := json.Marshal(legacyCfg)
|
|
if err != nil {
|
|
t.Fatalf("marshal legacy config: %v", err)
|
|
}
|
|
repo.values[SettingKeyOpsAdvancedSettings] = string(raw)
|
|
|
|
cfg, err := svc.GetOpsAdvancedSettings(context.Background())
|
|
if err != nil {
|
|
t.Fatalf("GetOpsAdvancedSettings() error = %v", err)
|
|
}
|
|
if cfg.DisplayOpenAITokenStats {
|
|
t.Fatalf("DisplayOpenAITokenStats = true, want false default backfill")
|
|
}
|
|
if !cfg.DisplayAlertEvents {
|
|
t.Fatalf("DisplayAlertEvents = false, want true default backfill")
|
|
}
|
|
}
|