64 lines
1.5 KiB
Go
64 lines
1.5 KiB
Go
package runtimeflags
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/jmoiron/sqlx"
|
|
_ "github.com/mattn/go-sqlite3"
|
|
)
|
|
|
|
func TestSQLiteStoreRoundTripsFalseOverride(t *testing.T) {
|
|
store := newTestStore(t)
|
|
ctx := context.Background()
|
|
|
|
if err := store.SetOverride(ctx, "features.office", false); err != nil {
|
|
t.Fatalf("SetOverride false: %v", err)
|
|
}
|
|
overrides, err := store.ListOverrides(ctx)
|
|
if err != nil {
|
|
t.Fatalf("ListOverrides: %v", err)
|
|
}
|
|
value, ok := overrides["features.office"]
|
|
if !ok {
|
|
t.Fatal("features.office override missing")
|
|
}
|
|
if value {
|
|
t.Fatal("features.office override = true, want false")
|
|
}
|
|
}
|
|
|
|
func TestSQLiteStoreDeleteOverrideRestoresMissing(t *testing.T) {
|
|
store := newTestStore(t)
|
|
ctx := context.Background()
|
|
|
|
if err := store.SetOverride(ctx, "features.office", true); err != nil {
|
|
t.Fatalf("SetOverride true: %v", err)
|
|
}
|
|
if err := store.DeleteOverride(ctx, "features.office"); err != nil {
|
|
t.Fatalf("DeleteOverride: %v", err)
|
|
}
|
|
overrides, err := store.ListOverrides(ctx)
|
|
if err != nil {
|
|
t.Fatalf("ListOverrides: %v", err)
|
|
}
|
|
if _, ok := overrides["features.office"]; ok {
|
|
t.Fatal("features.office override still present after delete")
|
|
}
|
|
}
|
|
|
|
func newTestStore(t *testing.T) *SQLiteStore {
|
|
t.Helper()
|
|
db, err := sqlx.Open("sqlite3", ":memory:")
|
|
if err != nil {
|
|
t.Fatalf("open sqlite: %v", err)
|
|
}
|
|
db.SetMaxOpenConns(1)
|
|
t.Cleanup(func() { _ = db.Close() })
|
|
store, err := NewSQLiteStore(db, db)
|
|
if err != nil {
|
|
t.Fatalf("NewSQLiteStore: %v", err)
|
|
}
|
|
return store
|
|
}
|