package dbx import ( "testing" "time" ) func TestConfigDefaults(t *testing.T) { cfg := Config{} cfg.defaults() if cfg.Logger == nil { t.Error("Logger should not be nil after defaults") } if cfg.Retry.MaxAttempts != 3 { t.Errorf("MaxAttempts = %d, want 3", cfg.Retry.MaxAttempts) } if cfg.Retry.BaseDelay != 50*time.Millisecond { t.Errorf("BaseDelay = %v, want 50ms", cfg.Retry.BaseDelay) } if cfg.Retry.MaxDelay != time.Second { t.Errorf("MaxDelay = %v, want 1s", cfg.Retry.MaxDelay) } if cfg.HealthCheck.Interval != 5*time.Second { t.Errorf("HealthCheck.Interval = %v, want 5s", cfg.HealthCheck.Interval) } if cfg.HealthCheck.Timeout != 2*time.Second { t.Errorf("HealthCheck.Timeout = %v, want 2s", cfg.HealthCheck.Timeout) } if cfg.Master.Name != "master" { t.Errorf("Master.Name = %q, want %q", cfg.Master.Name, "master") } } func TestConfigDefaultsReplicaNames(t *testing.T) { cfg := Config{ Replicas: []NodeConfig{ {DSN: "a"}, {Name: "custom", DSN: "b"}, {DSN: "c"}, }, } cfg.defaults() if cfg.Replicas[0].Name != "replica-1" { t.Errorf("Replica[0].Name = %q, want %q", cfg.Replicas[0].Name, "replica-1") } if cfg.Replicas[1].Name != "custom" { t.Errorf("Replica[1].Name = %q, want %q", cfg.Replicas[1].Name, "custom") } if cfg.Replicas[2].Name != "replica-3" { t.Errorf("Replica[2].Name = %q, want %q", cfg.Replicas[2].Name, "replica-3") } } func TestConfigDefaultsNoOverwrite(t *testing.T) { cfg := Config{ Retry: RetryConfig{ MaxAttempts: 5, BaseDelay: 100 * time.Millisecond, MaxDelay: 2 * time.Second, }, } cfg.defaults() if cfg.Retry.MaxAttempts != 5 { t.Errorf("MaxAttempts = %d, want 5", cfg.Retry.MaxAttempts) } if cfg.Retry.BaseDelay != 100*time.Millisecond { t.Errorf("BaseDelay = %v, want 100ms", cfg.Retry.BaseDelay) } }