summaryrefslogtreecommitdiffstats
path: root/internal/storage/storage_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/storage/storage_test.go')
-rw-r--r--internal/storage/storage_test.go70
1 files changed, 70 insertions, 0 deletions
diff --git a/internal/storage/storage_test.go b/internal/storage/storage_test.go
new file mode 100644
index 0000000..f2fe401
--- /dev/null
+++ b/internal/storage/storage_test.go
@@ -0,0 +1,70 @@
1package storage
2
3import (
4 "testing"
5)
6
7func TestNew(t *testing.T) {
8 // Test in-memory database
9 store, err := New(":memory:")
10 if err != nil {
11 t.Fatalf("failed to create storage: %v", err)
12 }
13 defer store.Close()
14
15 // Verify database is accessible
16 if store.DB() == nil {
17 t.Fatal("DB() returned nil")
18 }
19
20 // Verify schema was created by checking if tables exist
21 var count int
22 query := `SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name IN ('events', 'deletions', 'replaceable_events')`
23 err = store.DB().QueryRow(query).Scan(&count)
24 if err != nil {
25 t.Fatalf("failed to query tables: %v", err)
26 }
27
28 if count != 3 {
29 t.Errorf("expected 3 main tables, got %d", count)
30 }
31}
32
33func TestNewFileDatabase(t *testing.T) {
34 // Test file-based database
35 dbPath := t.TempDir() + "/test.db"
36 store, err := New(dbPath)
37 if err != nil {
38 t.Fatalf("failed to create file-based storage: %v", err)
39 }
40 defer store.Close()
41
42 // Verify WAL mode is enabled
43 var walMode string
44 err = store.DB().QueryRow("PRAGMA journal_mode").Scan(&walMode)
45 if err != nil {
46 t.Fatalf("failed to query journal mode: %v", err)
47 }
48
49 if walMode != "wal" {
50 t.Errorf("expected WAL mode, got %s", walMode)
51 }
52}
53
54func TestClose(t *testing.T) {
55 store, err := New(":memory:")
56 if err != nil {
57 t.Fatalf("failed to create storage: %v", err)
58 }
59
60 err = store.Close()
61 if err != nil {
62 t.Errorf("failed to close storage: %v", err)
63 }
64
65 // Verify database is closed by attempting a query
66 err = store.DB().Ping()
67 if err == nil {
68 t.Error("expected error when pinging closed database")
69 }
70}