summaryrefslogtreecommitdiff
path: root/testing.go
diff options
context:
space:
mode:
authorxengineering <me@xengineering.eu>2026-05-31 21:20:48 +0200
committerxengineering <me@xengineering.eu>2026-05-31 21:37:13 +0200
commitefb324070827bd1fe713b93f80c601551d246579 (patch)
treed90ab00d48777eb780fe1d6d729e44ca43475350 /testing.go
parent4cb6a5952f341741ef2728fb39acb7f19de61ba9 (diff)
downloadfinserv-efb324070827bd1fe713b93f80c601551d246579.tar
finserv-efb324070827bd1fe713b93f80c601551d246579.tar.zst
finserv-efb324070827bd1fe713b93f80c601551d246579.zip
Add migration execution
This adds the execution of the embedded migrations and adds a suitable unit test.
Diffstat (limited to 'testing.go')
-rw-r--r--testing.go50
1 files changed, 50 insertions, 0 deletions
diff --git a/testing.go b/testing.go
new file mode 100644
index 0000000..d4a8457
--- /dev/null
+++ b/testing.go
@@ -0,0 +1,50 @@
+package main
+
+import (
+ "database/sql"
+ "fmt"
+ "os"
+ "path/filepath"
+ "testing"
+
+ _ "github.com/mattn/go-sqlite3"
+)
+
+func newSite(t *testing.T) string {
+ site, err := os.MkdirTemp("", "finserv-testing-")
+ if err != nil {
+ t.Fatalf("Error creating test site '%s': %v", site, err)
+ }
+
+ t.Cleanup(func() {
+ os.RemoveAll(site)
+ t.Logf("Removed test site '%s'.", site)
+ })
+
+ t.Logf("Created test site '%s'.", site)
+ return site
+}
+
+func emptyDB(t *testing.T) (*sql.DB, string) {
+ site := newSite(t)
+
+ path := filepath.Join(site, "main.sqlite3")
+
+ db, err := sql.Open("sqlite3", path)
+ if err != nil {
+ t.Fatalf("Failed to open SQLite3 database '%s': %v", path, err)
+ }
+
+ t.Cleanup(func() {
+ db.Close()
+ t.Logf("Removed test database '%s'.", path)
+ })
+
+ t.Logf("Created test database '%s'.", path)
+ return db, path
+}
+
+func migrationPath(index int) string {
+ name := fmt.Sprintf(migrationFilePattern, index+1)
+ return filepath.Join(migrationDir, name)
+}