package storage import ( "testing" ) func TestNew(t *testing.T) { // Test in-memory database store, err := New(":memory:") if err != nil { t.Fatalf("failed to create storage: %v", err) } defer store.Close() // Verify database is accessible if store.DB() == nil { t.Fatal("DB() returned nil") } // Verify schema was created by checking if tables exist var count int query := `SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name IN ('events', 'deletions', 'replaceable_events')` err = store.DB().QueryRow(query).Scan(&count) if err != nil { t.Fatalf("failed to query tables: %v", err) } if count != 3 { t.Errorf("expected 3 main tables, got %d", count) } } func TestNewFileDatabase(t *testing.T) { // Test file-based database dbPath := t.TempDir() + "/test.db" store, err := New(dbPath) if err != nil { t.Fatalf("failed to create file-based storage: %v", err) } defer store.Close() // Verify WAL mode is enabled var walMode string err = store.DB().QueryRow("PRAGMA journal_mode").Scan(&walMode) if err != nil { t.Fatalf("failed to query journal mode: %v", err) } if walMode != "wal" { t.Errorf("expected WAL mode, got %s", walMode) } } func TestClose(t *testing.T) { store, err := New(":memory:") if err != nil { t.Fatalf("failed to create storage: %v", err) } err = store.Close() if err != nil { t.Errorf("failed to close storage: %v", err) } // Verify database is closed by attempting a query err = store.DB().Ping() if err == nil { t.Error("expected error when pinging closed database") } }