Files
nostrlib/eventstore/badger/badger_test.go
2025-05-12 10:18:06 -03:00

62 lines
1.4 KiB
Go

package badger
import (
"os"
"testing"
"fiatjaf.com/nostr"
"fiatjaf.com/nostr/eventstore"
"github.com/stretchr/testify/require"
)
func TestBasicStoreAndQuery(t *testing.T) {
// create a temporary directory for the test database
dir, err := os.MkdirTemp("", "badger-test-*")
require.NoError(t, err)
defer os.RemoveAll(dir)
// initialize the store
db := &BadgerBackend{Path: dir}
err = db.Init()
require.NoError(t, err)
defer db.Close()
// create a test event
evt := nostr.Event{
Content: "hello world",
CreatedAt: 1000,
Kind: 1,
Tags: nostr.Tags{},
}
err = evt.Sign(nostr.Generate())
require.NoError(t, err)
// save the event
err = db.SaveEvent(evt)
require.NoError(t, err)
// try to save it again, should fail with ErrDupEvent
err = db.SaveEvent(evt)
require.Error(t, err)
require.Equal(t, eventstore.ErrDupEvent, err)
// query the event by its ID
filter := nostr.Filter{
IDs: []nostr.ID{evt.ID},
}
// collect results
results := make([]nostr.Event, 0)
for event := range db.QueryEvents(filter, 500) {
results = append(results, event)
}
// verify we got exactly one event and it matches
require.Len(t, results, 1)
require.Equal(t, evt.ID, results[0].ID)
require.Equal(t, evt.Content, results[0].Content)
require.Equal(t, evt.CreatedAt, results[0].CreatedAt)
require.Equal(t, evt.Kind, results[0].Kind)
require.Equal(t, evt.PubKey, results[0].PubKey)
}