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.
52 lines
1.3 KiB
52 lines
1.3 KiB
package database |
|
|
|
import ( |
|
"bufio" |
|
"bytes" |
|
"testing" |
|
|
|
"git.mleku.dev/mleku/nostr/encoders/event" |
|
"lol.mleku.dev/chk" |
|
) |
|
|
|
// TestExport tests the Export function by: |
|
// 1. Using the shared database with events from examples.Cache |
|
// 2. Checking that events can be exported |
|
// 3. Verifying the exported events can be parsed |
|
func TestExport(t *testing.T) { |
|
// Use shared database (skips in short mode) |
|
db, ctx := GetSharedDB(t) |
|
savedEvents := GetSharedEvents(t) |
|
|
|
t.Logf("Shared database has %d events", len(savedEvents)) |
|
|
|
// Test 1: Export all events and verify they can be parsed |
|
var exportBuffer bytes.Buffer |
|
db.Export(ctx, &exportBuffer) |
|
|
|
// Parse the exported events and count them |
|
exportedIDs := make(map[string]bool) |
|
exportScanner := bufio.NewScanner(&exportBuffer) |
|
exportScanner.Buffer(make([]byte, 0, 1_000_000_000), 1_000_000_000) |
|
exportCount := 0 |
|
for exportScanner.Scan() { |
|
b := exportScanner.Bytes() |
|
ev := event.New() |
|
if _, err := ev.Unmarshal(b); chk.E(err) { |
|
t.Fatal(err) |
|
} |
|
exportedIDs[string(ev.ID)] = true |
|
exportCount++ |
|
} |
|
// Check for scanner errors |
|
if err := exportScanner.Err(); err != nil { |
|
t.Fatalf("Scanner error: %v", err) |
|
} |
|
|
|
t.Logf("Found %d events in the export", exportCount) |
|
|
|
// Verify we exported a reasonable number of events |
|
if exportCount == 0 { |
|
t.Fatal("Export returned no events") |
|
} |
|
}
|
|
|