mirror of
https://git.sr.ht/~ashkeel/strimertul
synced 2024-09-18 01:50:50 +00:00
80 lines
1.5 KiB
Go
80 lines
1.5 KiB
Go
package database
|
|
|
|
import (
|
|
kv "github.com/strimertul/kilovolt/v10"
|
|
"go.uber.org/zap/zaptest"
|
|
"testing"
|
|
)
|
|
|
|
func TestLocalDBClient_PutKey(t *testing.T) {
|
|
client, store := createLocalClient(t)
|
|
defer cleanupClient(client)
|
|
|
|
// Store a key using the local client
|
|
key := "test"
|
|
value := "value"
|
|
err := client.PutKey(key, value)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
// Retrieve the key from the store and verify it
|
|
stored, err := store.Get(key)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if stored != value {
|
|
t.Fatalf("expected %s, got %s", value, stored)
|
|
}
|
|
}
|
|
|
|
func TestLocalDBClient_GetKey(t *testing.T) {
|
|
client, store := createLocalClient(t)
|
|
defer cleanupClient(client)
|
|
|
|
// Store a key directly in the store
|
|
key := "test"
|
|
value := "value"
|
|
|
|
err := store.Set(key, value)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
// Retrieve the key using the local client
|
|
stored, err := client.GetKey(key)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if stored != value {
|
|
t.Fatalf("expected %s, got %s", value, stored)
|
|
}
|
|
}
|
|
|
|
func createLocalClient(t *testing.T) (*LocalDBClient, kv.Driver) {
|
|
logger := zaptest.NewLogger(t)
|
|
|
|
// Create in-memory store and hub
|
|
inmemStore := kv.MakeBackend()
|
|
hub, err := kv.NewHub(inmemStore, kv.HubOptions{}, logger)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
go hub.Run()
|
|
|
|
// Create local client
|
|
client, err := NewLocalClient(hub, logger)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
return client, inmemStore
|
|
}
|
|
|
|
func cleanupClient(client *LocalDBClient) {
|
|
if client.hub != nil {
|
|
_ = client.Close()
|
|
client.hub.Close()
|
|
}
|
|
}
|