photoprism/internal/migrate/dialect_sqlite3_test.go
Michael Mayer 74772aea97 Config: Always initialize fixtures, even when skipping migrations #3215
Signed-off-by: Michael Mayer <michael@photoprism.app>
2023-02-21 04:44:08 +01:00

77 lines
1.4 KiB
Go

package migrate
import (
"os"
"path/filepath"
"testing"
"github.com/sirupsen/logrus"
"github.com/stretchr/testify/assert"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
_ "github.com/jinzhu/gorm/dialects/sqlite"
"github.com/photoprism/photoprism/pkg/fs"
)
func TestDialectSQLite3(t *testing.T) {
// Prepare temporary sqlite3 db.
testDbOriginal := "./testdata/migrate_sqlite3"
testDbTemp := "./testdata/migrate_sqlite3.db"
if !fs.FileExists(testDbOriginal) {
t.Fatal(testDbOriginal + " not found")
}
dumpName, err := filepath.Abs(testDbTemp)
_ = os.Remove(dumpName)
if err != nil {
t.Fatal(err)
} else if err = fs.Copy(testDbOriginal, dumpName); err != nil {
t.Fatal(err)
}
defer os.Remove(dumpName)
log = logrus.StandardLogger()
log.SetLevel(logrus.TraceLevel)
db, err := gorm.Open(
"sqlite3",
dumpName,
)
if err != nil || db == nil {
if err != nil {
t.Fatal(err)
}
return
}
defer db.Close()
db.LogMode(false)
db.SetLogger(log)
opt := Opt(true, true, nil)
// Run pre-migrations.
if err = Run(db, opt.Pre()); err != nil {
t.Error(err)
}
// Run migrations.
if err = Run(db, opt); err != nil {
t.Error(err)
}
stmt := db.Table("photos").Where("photo_description = '' OR photo_description IS NULL")
count := 0
// Fetch count from database.
if err = stmt.Count(&count).Error; err != nil {
t.Error(err)
} else {
assert.Equal(t, 0, count)
}
}