package config import ( "path/filepath" "testing" "jiggablend/internal/database" ) func newTestConfig(t *testing.T) *Config { t.Helper() db, err := database.NewDB(filepath.Join(t.TempDir(), "cfg.db")) if err != nil { t.Fatalf("NewDB failed: %v", err) } t.Cleanup(func() { _ = db.Close() }) return NewConfig(db) } func TestSetGetExistsDelete(t *testing.T) { cfg := newTestConfig(t) if err := cfg.Set("alpha", "1"); err != nil { t.Fatalf("Set failed: %v", err) } v, err := cfg.Get("alpha") if err != nil { t.Fatalf("Get failed: %v", err) } if v != "1" { t.Fatalf("unexpected value: %q", v) } exists, err := cfg.Exists("alpha") if err != nil { t.Fatalf("Exists failed: %v", err) } if !exists { t.Fatal("expected key to exist") } if err := cfg.Delete("alpha"); err != nil { t.Fatalf("Delete failed: %v", err) } exists, err = cfg.Exists("alpha") if err != nil { t.Fatalf("Exists after delete failed: %v", err) } if exists { t.Fatal("expected key to be deleted") } } func TestGetIntWithDefault_AndMinimumFrameTask(t *testing.T) { cfg := newTestConfig(t) if got := cfg.GetIntWithDefault("missing", 17); got != 17 { t.Fatalf("expected default value, got %d", got) } if err := cfg.SetInt(KeyFramesPerRenderTask, 0); err != nil { t.Fatalf("SetInt failed: %v", err) } if got := cfg.GetFramesPerRenderTask(); got != 1 { t.Fatalf("expected clamped value 1, got %d", got) } }