Skip to content

Commit

Permalink
Add first Session unit test
Browse files Browse the repository at this point in the history
  • Loading branch information
otoolep committed Jan 11, 2025
1 parent 2a0ca73 commit d7ea36b
Showing 1 changed file with 69 additions and 0 deletions.
69 changes: 69 additions & 0 deletions sqlite3_session_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package sqlite3

import (
"context"
"database/sql"
"testing"
)

func Test_EmptyChangeset(t *testing.T) {
// Open a new in-memory SQLite database
db, err := sql.Open("sqlite3", ":memory:")
if err != nil {
t.Fatal("Failed to open", err)
}
err = db.Ping()
if err != nil {
t.Fatal("Failed to ping", err)
}
defer db.Close()

_, err = db.Exec(`CREATE TABLE test_table (id INTEGER PRIMARY KEY, value TEXT);`)
if err != nil {
t.Fatalf("Failed to create table: %v", err)
}

conn, err := db.Conn(context.Background())
if err != nil {
t.Fatal("Failed to get connection to source database:", err)
}
defer conn.Close()

var session *Session
if err := conn.Raw(func(raw any) error {
var err error
session, err = raw.(*SQLiteConn).CreateSession("main")
return err
}); err != nil {
t.Fatal("Failed to serialize source database:", err)
}
defer func() {
if err := session.DeleteSession(); err != nil {
t.Errorf("Failed to delete session: %v", err)
}
}()

err = session.AttachSession("test_table")
if err != nil {
t.Fatalf("Failed to attach session to table: %v", err)
}

changeset, err := session.Changeset()
if err != nil {
t.Fatalf("Failed to generate changeset: %v", err)
}

iter, err := NewChangesetIterator(changeset)
if err != nil {
t.Fatalf("Failed to create changeset iterator: %v", err)
}
if b, err := iter.Next(); err != nil {
t.Fatalf("Failed to get next changeset: %v", err)
} else if b {
t.Fatalf("changeset contains changes: %v", b)
}

if err := iter.Finalize(); err != nil {
t.Fatalf("Failed to finalize changeset iterator: %v", err)
}
}

0 comments on commit d7ea36b

Please sign in to comment.