Skip to content

Commit d7ea36b

Browse files
committed
Add first Session unit test
1 parent 2a0ca73 commit d7ea36b

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

sqlite3_session_test.go

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package sqlite3
2+
3+
import (
4+
"context"
5+
"database/sql"
6+
"testing"
7+
)
8+
9+
func Test_EmptyChangeset(t *testing.T) {
10+
// Open a new in-memory SQLite database
11+
db, err := sql.Open("sqlite3", ":memory:")
12+
if err != nil {
13+
t.Fatal("Failed to open", err)
14+
}
15+
err = db.Ping()
16+
if err != nil {
17+
t.Fatal("Failed to ping", err)
18+
}
19+
defer db.Close()
20+
21+
_, err = db.Exec(`CREATE TABLE test_table (id INTEGER PRIMARY KEY, value TEXT);`)
22+
if err != nil {
23+
t.Fatalf("Failed to create table: %v", err)
24+
}
25+
26+
conn, err := db.Conn(context.Background())
27+
if err != nil {
28+
t.Fatal("Failed to get connection to source database:", err)
29+
}
30+
defer conn.Close()
31+
32+
var session *Session
33+
if err := conn.Raw(func(raw any) error {
34+
var err error
35+
session, err = raw.(*SQLiteConn).CreateSession("main")
36+
return err
37+
}); err != nil {
38+
t.Fatal("Failed to serialize source database:", err)
39+
}
40+
defer func() {
41+
if err := session.DeleteSession(); err != nil {
42+
t.Errorf("Failed to delete session: %v", err)
43+
}
44+
}()
45+
46+
err = session.AttachSession("test_table")
47+
if err != nil {
48+
t.Fatalf("Failed to attach session to table: %v", err)
49+
}
50+
51+
changeset, err := session.Changeset()
52+
if err != nil {
53+
t.Fatalf("Failed to generate changeset: %v", err)
54+
}
55+
56+
iter, err := NewChangesetIterator(changeset)
57+
if err != nil {
58+
t.Fatalf("Failed to create changeset iterator: %v", err)
59+
}
60+
if b, err := iter.Next(); err != nil {
61+
t.Fatalf("Failed to get next changeset: %v", err)
62+
} else if b {
63+
t.Fatalf("changeset contains changes: %v", b)
64+
}
65+
66+
if err := iter.Finalize(); err != nil {
67+
t.Fatalf("Failed to finalize changeset iterator: %v", err)
68+
}
69+
}

0 commit comments

Comments
 (0)