99 lines
1.9 KiB
Go
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)
|
|
}
|