diff options
| author | xengineering <me@xengineering.eu> | 2026-06-02 20:27:05 +0200 |
|---|---|---|
| committer | xengineering <me@xengineering.eu> | 2026-06-02 20:27:05 +0200 |
| commit | 3ad3565c64ed1ce692c0509d8fe5a7530f8fb7e3 (patch) | |
| tree | 683dd70710ea9bbc9e3c95282c078e97ba3d55fd | |
| parent | a3009e165c4cdbf94eb23a071d5e6c39425539e8 (diff) | |
| download | finserv-3ad3565c64ed1ce692c0509d8fe5a7530f8fb7e3.tar finserv-3ad3565c64ed1ce692c0509d8fe5a7530f8fb7e3.tar.zst finserv-3ad3565c64ed1ce692c0509d8fe5a7530f8fb7e3.zip | |
Add TestTransaction
This makes sure the assumption is correct that everything inside a
transaction is rolled back if the transaction fails.
| -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) |
