summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--database_test.go37
1 files changed, 37 insertions, 0 deletions
diff --git a/database_test.go b/database_test.go
index 26e4e3d..2f73865 100644
--- a/database_test.go
+++ b/database_test.go
@@ -31,6 +31,43 @@ func TestReadMigrations(t *testing.T) {
}
}
+func TestTransaction(t *testing.T) {
+ db, _ := emptyDB(t)
+
+ newVersion := 1
+ err := Transaction(db, func(tx *sql.Tx) error {
+ // valid statement
+ _, err := tx.Exec(fmt.Sprintf("PRAGMA user_version = %d;", newVersion))
+ if err != nil {
+ return err
+ }
+
+ // invalid statement which should roll back the whole transaction
+ _, err = tx.Exec("PRAGMA user_version THIS IS SYNTAX ERROR TALKING!!!")
+ if err != nil {
+ return err
+ }
+ return nil
+ })
+ if err == nil {
+ t.Fatal("Error was not detected.")
+ }
+
+ version, err := UserVersion(db)
+ if err != nil {
+ t.Fatalf("Failed to get user_version: %v", err)
+ }
+
+ if version == newVersion {
+ t.Fatal("Valid statement was not rolled back.")
+ }
+
+ expectedVersion := 0
+ if version != expectedVersion {
+ t.Fatalf("Expected user_version %d but got %d", expectedVersion, version)
+ }
+}
+
func TestMigrate(t *testing.T) {
db, _ := emptyDB(t)