You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

70 lines
1.7 KiB

package database
import (
"testing"
"git.mleku.dev/mleku/nostr/encoders/filter"
"git.mleku.dev/mleku/nostr/encoders/kind"
"git.mleku.dev/mleku/nostr/encoders/tag"
"next.orly.dev/pkg/utils"
)
func TestQueryForKindsAuthors(t *testing.T) {
// Use shared database (read-only test)
db, ctx := GetSharedDB(t)
events := GetSharedEvents(t)
if len(events) < 2 {
t.Fatalf("Need at least 2 saved events, got %d", len(events))
}
// Test querying by kind and author
// Find an event with a specific kind and author
testKind := kind.New(1) // Kind 1 is typically text notes
kindFilter := kind.NewS(testKind)
// Use the author from events[1]
authorFilter := tag.NewFromBytesSlice(events[1].Pubkey)
idTsPk, err := db.QueryForIds(
ctx, &filter.F{
Kinds: kindFilter,
Authors: authorFilter,
},
)
if err != nil {
t.Fatalf("Failed to query for kinds and authors: %v", err)
}
// Verify we got results
if len(idTsPk) == 0 {
t.Fatal("did not find any events with the specified kind and author")
}
// Verify the results have the correct kind and author
for i, result := range idTsPk {
// Find the event with this ID
var found bool
for _, ev := range events {
if utils.FastEqual(result.Id, ev.ID) {
found = true
if ev.Kind != testKind.K {
t.Fatalf(
"result %d has incorrect kind, got %d, expected %d",
i, ev.Kind, testKind.K,
)
}
if !utils.FastEqual(ev.Pubkey, events[1].Pubkey) {
t.Fatalf(
"result %d has incorrect author, got %x, expected %x",
i, ev.Pubkey, events[1].Pubkey,
)
}
break
}
}
if !found {
t.Fatalf("result %d with ID %x not found in events", i, result.Id)
}
}
}