summaryrefslogtreecommitdiff
path: root/database_test.go
diff options
context:
space:
mode:
authorxengineering <me@xengineering.eu>2026-06-02 19:52:18 +0200
committerxengineering <me@xengineering.eu>2026-06-02 19:52:18 +0200
commita750aa4ecf7ecab519b53d7f3ac082425ba50686 (patch)
tree3949dfc9c21779027717783784d81d1faa5634f6 /database_test.go
parentbd1ead99fd53ad8c3c016b59d67f5bf58ade5095 (diff)
downloadfinserv-a750aa4ecf7ecab519b53d7f3ac082425ba50686.tar
finserv-a750aa4ecf7ecab519b53d7f3ac082425ba50686.tar.zst
finserv-a750aa4ecf7ecab519b53d7f3ac082425ba50686.zip
Add MigrateToLatest
This function will be used most by the production software to update the database schema to the latest known version.
Diffstat (limited to 'database_test.go')
-rw-r--r--database_test.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/database_test.go b/database_test.go
index a9c818b..66ffc37 100644
--- a/database_test.go
+++ b/database_test.go
@@ -1,6 +1,7 @@
package main
import (
+ "database/sql"
"fmt"
"os"
"strings"
@@ -68,3 +69,45 @@ func TestMigrations(t *testing.T) {
}
}
}
+
+func TestMigrateToLatest(t *testing.T) {
+ db, _ := emptyDB(t)
+
+ err := MigrateToLatest(db)
+ if err != nil {
+ t.Fatalf("Could not execute function to test: %v", err)
+ }
+
+ v, err := UserVersion(db)
+ if err != nil {
+ t.Fatalf("Could not get user_version after migration: %v", err)
+ }
+
+ latest := len(migrations)
+ if v != latest {
+ t.Fatalf("Expected user_version %d but got %d.", latest, v)
+ }
+
+ futureUserVersion := 10000
+ err = Transaction(db, func(tx *sql.Tx) error {
+ _, err := tx.Exec(fmt.Sprintf("PRAGMA user_version = %d;", futureUserVersion))
+ if err != nil {
+ return err
+ }
+ return nil
+ })
+
+ err = MigrateToLatest(db)
+ if err != nil {
+ t.Fatalf("Could not execute function to test with future DB: %v", err)
+ }
+
+ v, err = UserVersion(db)
+ if err != nil {
+ t.Fatalf("Could not get user_version after migration with future DB: %v", err)
+ }
+
+ if v != futureUserVersion {
+ t.Fatalf("Expected user_version %d but got %d.", futureUserVersion, v)
+ }
+}