feat(site_store): enable allowSetTheme and autoTheme settings

This commit is contained in:
hexxa 2022-04-04 22:21:02 +08:00 committed by Hexxa
parent 79ccda2a67
commit 4089e1c319
2 changed files with 116 additions and 12 deletions

View file

@ -43,7 +43,9 @@ var (
Align: "fixed", Align: "fixed",
BgColor: "#ccc", BgColor: "#ccc",
} }
BgRepeatValues = map[string]bool{ DefaultAllowSetBg = false
DefaultAutoTheme = true
BgRepeatValues = map[string]bool{
"repeat-x": true, "repeat-x": true,
"repeat-y": true, "repeat-y": true,
"repeat": true, "repeat": true,
@ -123,9 +125,11 @@ type SiteConfig struct {
} }
type ClientConfig struct { type ClientConfig struct {
SiteName string `json:"siteName" yaml:"siteName"` SiteName string `json:"siteName" yaml:"siteName"`
SiteDesc string `json:"siteDesc" yaml:"siteDesc"` SiteDesc string `json:"siteDesc" yaml:"siteDesc"`
Bg *BgConfig `json:"bg" yaml:"bg"` Bg *BgConfig `json:"bg" yaml:"bg"`
AllowSetBg bool `json:"allowSetBg" yaml:"allowSetBg"`
AutoTheme bool `json:"autoTheme" yaml:"autoTheme"`
} }
type BgConfig struct { type BgConfig struct {
@ -172,8 +176,10 @@ func CheckSiteCfg(cfg *SiteConfig, fillDefault bool) error {
return errors.New("cfg.ClientCfg not defined") return errors.New("cfg.ClientCfg not defined")
} }
cfg.ClientCfg = &ClientConfig{ cfg.ClientCfg = &ClientConfig{
SiteName: DefaultSiteName, SiteName: DefaultSiteName,
SiteDesc: DefaultSiteDesc, SiteDesc: DefaultSiteDesc,
AllowSetBg: DefaultAllowSetBg,
AutoTheme: DefaultAutoTheme,
Bg: &BgConfig{ Bg: &BgConfig{
Url: DefaultBgConfig.Url, Url: DefaultBgConfig.Url,
Repeat: DefaultBgConfig.Repeat, Repeat: DefaultBgConfig.Repeat,

View file

@ -1,6 +1,7 @@
package sitestore package sitestore
import ( import (
"encoding/json"
"io/ioutil" "io/ioutil"
"os" "os"
"path/filepath" "path/filepath"
@ -13,11 +14,95 @@ import (
func TestSiteStore(t *testing.T) { func TestSiteStore(t *testing.T) {
testSiteMethods := func(t *testing.T, store ISiteStore) { // testSiteMethods := func(t *testing.T, store ISiteStore) {
// siteCfg := &db.SiteConfig{
// ClientCfg: &db.ClientConfig{
// SiteName: "quickshare",
// SiteDesc: "simpel file sharing",
// AllowSetBg: true,
// AutoTheme: true,
// Bg: &db.BgConfig{
// Url: "/imgs/bg.jpg",
// Repeat: "no-repeat",
// Position: "center",
// Align: "fixed",
// BgColor: "#ccc",
// },
// },
// }
// err := store.SetClientCfg(siteCfg.ClientCfg)
// if err != nil {
// t.Fatal(err)
// }
// newSiteCfg, err := store.GetCfg()
// if err != nil {
// t.Fatal(err)
// } else if !reflect.DeepEqual(newSiteCfg, siteCfg) {
// t.Fatalf("not equal new(%v) original(%v)", newSiteCfg, siteCfg)
// }
// }
// t.Run("Get/Set config", func(t *testing.T) {
// rootPath, err := ioutil.TempDir("./", "quickshare_sitestore_test_")
// if err != nil {
// t.Fatal(err)
// }
// defer os.RemoveAll(rootPath)
// dbPath := filepath.Join(rootPath, "quickshare.db")
// kvstore := boltdbpvd.New(dbPath, 1024)
// defer kvstore.Close()
// store, err := NewSiteStore(kvstore)
// if err != nil {
// t.Fatal("fail to new kvstore", err)
// }
// err = store.Init(&db.SiteConfig{
// ClientCfg: &db.ClientConfig{
// SiteName: "",
// SiteDesc: "",
// AllowSetBg: true,
// AutoTheme: false,
// Bg: &db.BgConfig{
// Url: "/imgs/bg.jpg",
// Repeat: "repeat",
// Position: "top",
// Align: "scroll",
// BgColor: "#000",
// },
// },
// })
// if err != nil {
// panic(err)
// }
// testSiteMethods(t, store)
// })
testMigrations := func(t *testing.T, store ISiteStore) {
autoFilledCfg := &db.SiteConfig{
ClientCfg: &db.ClientConfig{
SiteName: "Quickshare",
SiteDesc: "Quickshare",
AllowSetBg: false,
AutoTheme: false,
Bg: &db.BgConfig{
Url: "/imgs/bg.jpg",
Repeat: "repeat",
Position: "top",
Align: "scroll",
BgColor: "#000",
},
},
}
siteCfg := &db.SiteConfig{ siteCfg := &db.SiteConfig{
ClientCfg: &db.ClientConfig{ ClientCfg: &db.ClientConfig{
SiteName: "quickshare", SiteName: "quickshare",
SiteDesc: "simpel file sharing", SiteDesc: "simpel file sharing",
AllowSetBg: true,
AutoTheme: true,
Bg: &db.BgConfig{ Bg: &db.BgConfig{
Url: "/imgs/bg.jpg", Url: "/imgs/bg.jpg",
Repeat: "no-repeat", Repeat: "no-repeat",
@ -28,7 +113,16 @@ func TestSiteStore(t *testing.T) {
}, },
} }
err := store.SetClientCfg(siteCfg.ClientCfg) oldSiteCfg, err := store.GetCfg()
if err != nil {
t.Fatal(err)
} else if !reflect.DeepEqual(oldSiteCfg, autoFilledCfg) {
oldSiteCfgBytes, _ := json.Marshal(oldSiteCfg)
autoFilledCfgBytes, _ := json.Marshal(autoFilledCfg)
t.Fatalf("not equal old \n%s\n filled\n%s\n", oldSiteCfgBytes, autoFilledCfgBytes)
}
err = store.SetClientCfg(siteCfg.ClientCfg)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -40,7 +134,7 @@ func TestSiteStore(t *testing.T) {
} }
} }
t.Run("Get/Set", func(t *testing.T) { t.Run("Test Migrations", func(t *testing.T) {
rootPath, err := ioutil.TempDir("./", "quickshare_sitestore_test_") rootPath, err := ioutil.TempDir("./", "quickshare_sitestore_test_")
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@ -55,10 +149,14 @@ func TestSiteStore(t *testing.T) {
if err != nil { if err != nil {
t.Fatal("fail to new kvstore", err) t.Fatal("fail to new kvstore", err)
} }
// this config does not contain some fields
err = store.Init(&db.SiteConfig{ err = store.Init(&db.SiteConfig{
ClientCfg: &db.ClientConfig{ ClientCfg: &db.ClientConfig{
SiteName: "", SiteName: "",
SiteDesc: "", SiteDesc: "",
// AllowSetBg: true,
// AutoTheme: false,
Bg: &db.BgConfig{ Bg: &db.BgConfig{
Url: "/imgs/bg.jpg", Url: "/imgs/bg.jpg",
Repeat: "repeat", Repeat: "repeat",
@ -72,6 +170,6 @@ func TestSiteStore(t *testing.T) {
panic(err) panic(err)
} }
testSiteMethods(t, store) testMigrations(t, store)
}) })
} }