Files
Home-Vue-Go/internal/database/database_test.go
T

57 lines
1.6 KiB
Go

package database
import (
"context"
"os"
"path/filepath"
"testing"
"home-vue-go/internal/config"
)
func TestSiteSettingsMigrationAndBooleanPersistence(t *testing.T) {
dataDir := t.TempDir()
writeJSON := func(name, value string) {
t.Helper()
if err := os.WriteFile(filepath.Join(dataDir, name), []byte(value), 0600); err != nil {
t.Fatal(err)
}
}
writeJSON("footer_year.json", `{"start":"2020","end":"2024"}`)
writeJSON("visit_timer.json", `{"showVisitTimer":false}`)
writeJSON("rotating_texts.json", `{"texts":["legacy text"]}`)
cfg := config.New(dataDir)
db, err := Init(cfg.DatabasePath, cfg)
if err != nil {
t.Fatal(err)
}
defer db.Close()
settings, err := db.LoadSiteSettings(context.Background())
if err != nil {
t.Fatal(err)
}
if settings.FooterYearStart != "2020" || settings.FooterYearEnd != "2024" || settings.ShowVisitTimer || len(settings.RotatingTexts) != 1 {
t.Fatalf("legacy settings were not migrated: %+v", settings)
}
settings.ShowAbout = false
settings.ShowSites = false
settings.ShowContacts = false
settings.ShowThemeToggle = false
settings.ShowFooter = false
settings.AnalyticsProvider = "umami"
settings.UmamiCredential = "v1:stored-secret"
if err := db.SaveSiteSettings(context.Background(), settings); err != nil {
t.Fatal(err)
}
loaded, err := db.LoadSiteSettings(context.Background())
if err != nil {
t.Fatal(err)
}
if loaded.ShowAbout || loaded.ShowSites || loaded.ShowContacts || loaded.ShowThemeToggle || loaded.ShowFooter || loaded.AnalyticsProvider != "umami" || loaded.UmamiCredential != "v1:stored-secret" {
t.Fatalf("false values or private payload were not persisted: %+v", loaded)
}
}