diff options
| author | xengineering <me@xengineering.eu> | 2026-06-02 19:52:18 +0200 |
|---|---|---|
| committer | xengineering <me@xengineering.eu> | 2026-06-02 19:52:18 +0200 |
| commit | a750aa4ecf7ecab519b53d7f3ac082425ba50686 (patch) | |
| tree | 3949dfc9c21779027717783784d81d1faa5634f6 /database_test.go | |
| parent | bd1ead99fd53ad8c3c016b59d67f5bf58ade5095 (diff) | |
| download | finserv-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.go | 43 |
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) + } +} |
