115 lines
2.9 KiB
Go
115 lines
2.9 KiB
Go
package store
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func newKeyValueStore(t *testing.T) *KeyValueStore {
|
|
t.Helper()
|
|
|
|
keyValueStore, err := New(Options{Path: ":memory:"})
|
|
require.NoError(t, err)
|
|
t.Cleanup(func() {
|
|
require.NoError(t, keyValueStore.Close())
|
|
})
|
|
return keyValueStore
|
|
}
|
|
|
|
func TestKeyValueStore_New_Options_Good(t *testing.T) {
|
|
keyValueStore := newKeyValueStore(t)
|
|
assert.NotNil(t, keyValueStore)
|
|
}
|
|
|
|
func TestKeyValueStore_New_Options_Bad(t *testing.T) {
|
|
_, err := New(Options{})
|
|
assert.Error(t, err)
|
|
}
|
|
|
|
func TestKeyValueStore_SetGet_Good(t *testing.T) {
|
|
keyValueStore := newKeyValueStore(t)
|
|
|
|
err := keyValueStore.Set("config", "theme", "dark")
|
|
require.NoError(t, err)
|
|
|
|
value, err := keyValueStore.Get("config", "theme")
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "dark", value)
|
|
}
|
|
|
|
func TestKeyValueStore_Get_NotFound_Bad(t *testing.T) {
|
|
keyValueStore := newKeyValueStore(t)
|
|
|
|
_, err := keyValueStore.Get("config", "missing")
|
|
assert.ErrorIs(t, err, NotFoundError)
|
|
}
|
|
|
|
func TestKeyValueStore_Delete_Good(t *testing.T) {
|
|
keyValueStore := newKeyValueStore(t)
|
|
|
|
_ = keyValueStore.Set("config", "key", "val")
|
|
err := keyValueStore.Delete("config", "key")
|
|
require.NoError(t, err)
|
|
|
|
_, err = keyValueStore.Get("config", "key")
|
|
assert.ErrorIs(t, err, NotFoundError)
|
|
}
|
|
|
|
func TestKeyValueStore_Count_Good(t *testing.T) {
|
|
keyValueStore := newKeyValueStore(t)
|
|
|
|
_ = keyValueStore.Set("group", "a", "1")
|
|
_ = keyValueStore.Set("group", "b", "2")
|
|
_ = keyValueStore.Set("other", "c", "3")
|
|
|
|
count, err := keyValueStore.Count("group")
|
|
require.NoError(t, err)
|
|
assert.Equal(t, 2, count)
|
|
}
|
|
|
|
func TestKeyValueStore_DeleteGroup_Good(t *testing.T) {
|
|
keyValueStore := newKeyValueStore(t)
|
|
|
|
_ = keyValueStore.Set("group", "a", "1")
|
|
_ = keyValueStore.Set("group", "b", "2")
|
|
err := keyValueStore.DeleteGroup("group")
|
|
require.NoError(t, err)
|
|
|
|
count, _ := keyValueStore.Count("group")
|
|
assert.Equal(t, 0, count)
|
|
}
|
|
|
|
func TestKeyValueStore_GetAll_Good(t *testing.T) {
|
|
keyValueStore := newKeyValueStore(t)
|
|
|
|
_ = keyValueStore.Set("group", "a", "1")
|
|
_ = keyValueStore.Set("group", "b", "2")
|
|
_ = keyValueStore.Set("other", "c", "3")
|
|
|
|
all, err := keyValueStore.GetAll("group")
|
|
require.NoError(t, err)
|
|
assert.Equal(t, map[string]string{"a": "1", "b": "2"}, all)
|
|
}
|
|
|
|
func TestKeyValueStore_GetAll_Empty_Good(t *testing.T) {
|
|
keyValueStore := newKeyValueStore(t)
|
|
|
|
all, err := keyValueStore.GetAll("empty")
|
|
require.NoError(t, err)
|
|
assert.Empty(t, all)
|
|
}
|
|
|
|
func TestKeyValueStore_Render_Good(t *testing.T) {
|
|
keyValueStore := newKeyValueStore(t)
|
|
|
|
_ = keyValueStore.Set("user", "pool", "pool.lthn.io:3333")
|
|
_ = keyValueStore.Set("user", "wallet", "iz...")
|
|
|
|
templateText := `{"pool":"{{ .pool }}","wallet":"{{ .wallet }}"}`
|
|
renderedText, err := keyValueStore.Render(templateText, "user")
|
|
require.NoError(t, err)
|
|
assert.Contains(t, renderedText, "pool.lthn.io:3333")
|
|
assert.Contains(t, renderedText, "iz...")
|
|
}
|