Files
m8sh/database/leveldb/leveldb_test.go
T

99 lines
1.9 KiB
Go

package leveldb
import (
"os"
"testing"
"github.com/stretchr/testify/require"
)
func TestNew(t *testing.T) {
path := t.TempDir() + "/db"
db, err := New(path)
require.NoError(t, err)
defer db.Close()
require.NotNil(t, db)
require.NotNil(t, db.db)
path = t.TempDir() + "/file.db"
require.NoError(t, os.WriteFile(path, []byte("data"), 0644))
_, err = New(path)
require.Error(t, err)
}
func TestGetters(t *testing.T) {
path := t.TempDir() + "/db"
db, err := New(path)
require.NoError(t, err)
defer db.Close()
require.NotNil(t, db.Users())
// require.NotNil(t, db.Subscriptions())
require.NotNil(t, db.Files())
// require.NotNil(t, db.Emails())
// require.NotNil(t, db.Messages())
// require.NotNil(t, db.Posts())
// require.NotNil(t, db.Reactions())
// require.NotNil(t, db.Comments())
}
func TestKey(t *testing.T) {
tests := []struct {
name string
user string
domain string
args []any
expected string
}{
{
name: "user and domain only",
user: "masha",
domain: "users",
args: nil,
expected: "masha:users",
},
{
name: "with one arg",
user: "masha",
domain: "emails",
args: []any{"inbox"},
expected: "masha:emails:inbox",
},
{
name: "with multiple args",
user: "masha",
domain: "msgs",
args: []any{"bob@d2.io", "uid123"},
expected: "masha:msgs:bob@d2.io:uid123",
},
{
name: "empty user",
user: "",
domain: "users",
args: nil,
expected: ":users",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := key(tt.user, tt.domain, tt.args...)
require.Equal(t, tt.expected, string(got))
})
}
}
func TestClose(t *testing.T) {
path := t.TempDir() + "/db"
db, err := New(path)
require.NoError(t, err)
require.NoError(t, db.Close())
err = db.db.Put([]byte("test"), []byte("value"), nil)
require.Error(t, err)
}