added Migrate Function for tests
Some checks failed
GoLang Tests / check and test (push) Failing after 24s
Some checks failed
GoLang Tests / check and test (push) Failing after 24s
This commit is contained in:
@@ -1,10 +1,17 @@
|
||||
package models_test
|
||||
|
||||
import (
|
||||
"arbeitszeitmessung/helper"
|
||||
"arbeitszeitmessung/models"
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"log"
|
||||
"testing"
|
||||
|
||||
"github.com/golang-migrate/migrate/v4"
|
||||
"github.com/golang-migrate/migrate/v4/database/postgres"
|
||||
_ "github.com/golang-migrate/migrate/v4/database/postgres"
|
||||
_ "github.com/golang-migrate/migrate/v4/source/file"
|
||||
_ "github.com/lib/pq"
|
||||
)
|
||||
|
||||
@@ -16,11 +23,24 @@ type DBFixture struct {
|
||||
func SetupDBFixture(t *testing.T) *DBFixture {
|
||||
t.Helper()
|
||||
|
||||
db, err := sql.Open("postgres", "postgres://postgres:password@localhost:5433/arbeitszeitmessung?sslmode=disable")
|
||||
dbHost := helper.GetEnv("POSTGRES_HOST", "localhost")
|
||||
dbPort := helper.GetEnv("POSTGRES_PORT", "5433")
|
||||
dbName := helper.GetEnv("POSTGRES_DB", "arbeitszeitmessung")
|
||||
dbUser := helper.GetEnv("POSTGRES_USER", "postgres")
|
||||
dbPassword := helper.GetEnv("POSTGRES_PASSWORD", "password")
|
||||
|
||||
connStr := fmt.Sprintf("postgres://%s:%s@%s:%s/%s?sslmode=disable&TimeZone=Europe/Berlin", dbUser, dbPassword, dbHost, dbPort, dbName)
|
||||
|
||||
db, err := sql.Open("postgres", connStr)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to connect to database: %v", err)
|
||||
}
|
||||
|
||||
err = MigrateDB(db, "file://../../migrations")
|
||||
if err != nil && err != migrate.ErrNoChange {
|
||||
t.Fatalf("Failed to migrate database: %v", err)
|
||||
}
|
||||
|
||||
tx, err := db.Begin()
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to start transaction: %v", err)
|
||||
@@ -36,3 +56,14 @@ func SetupDBFixture(t *testing.T) *DBFixture {
|
||||
TX: tx,
|
||||
}
|
||||
}
|
||||
|
||||
func MigrateDB(db *sql.DB, fileUrl string) error {
|
||||
driver, err := postgres.WithInstance(db, &postgres.Config{})
|
||||
if err != nil {
|
||||
log.Fatalln("Error starting migration", err)
|
||||
}
|
||||
m, err := migrate.NewWithDatabaseInstance(
|
||||
fileUrl,
|
||||
"postgres", driver)
|
||||
return m.Up()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user