diff options
Diffstat (limited to 'database_test.go')
| -rw-r--r-- | database_test.go | 37 |
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) |
