50 lines
1.0 KiB
Go

package storage_test
import (
"testing"
"git.akyoto.dev/go/assert"
"git.akyoto.dev/go/ocean"
"git.akyoto.dev/go/ocean/storage"
)
type User struct {
Name string `json:"name"`
}
func TestInterface(t *testing.T) {
var _ ocean.Storage[string] = (*storage.File[string])(nil)
var _ ocean.Storage[string] = (*storage.Directory[string])(nil)
}
func TestPersistence(t *testing.T) {
users, err := ocean.New[User]("test", &storage.File[User]{})
assert.Nil(t, err)
defer users.Sync()
defer users.Clear()
users.Set("1", &User{Name: "User 1"})
users.Set("2", &User{Name: "User 2"})
users.Set("3", &User{Name: "User 3"})
users.Sync()
reload, err := ocean.New[User]("test", &storage.File[User]{})
assert.Nil(t, err)
user, err := reload.Get("1")
assert.Nil(t, err)
assert.NotNil(t, user)
assert.Equal(t, user.Name, "User 1")
user, err = reload.Get("2")
assert.Nil(t, err)
assert.NotNil(t, user)
assert.Equal(t, user.Name, "User 2")
user, err = reload.Get("3")
assert.Nil(t, err)
assert.NotNil(t, user)
assert.Equal(t, user.Name, "User 3")
}