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,6 +43,8 @@ var (
Align: "fixed",
BgColor: "#ccc",
}
DefaultAllowSetBg = false
DefaultAutoTheme = true
BgRepeatValues = map[string]bool{
"repeat-x": true,
"repeat-y": true,
@ -126,6 +128,8 @@ type ClientConfig struct {
SiteName string `json:"siteName" yaml:"siteName"`
SiteDesc string `json:"siteDesc" yaml:"siteDesc"`
Bg *BgConfig `json:"bg" yaml:"bg"`
AllowSetBg bool `json:"allowSetBg" yaml:"allowSetBg"`
AutoTheme bool `json:"autoTheme" yaml:"autoTheme"`
}
type BgConfig struct {
@ -174,6 +178,8 @@ func CheckSiteCfg(cfg *SiteConfig, fillDefault bool) error {
cfg.ClientCfg = &ClientConfig{
SiteName: DefaultSiteName,
SiteDesc: DefaultSiteDesc,
AllowSetBg: DefaultAllowSetBg,
AutoTheme: DefaultAutoTheme,
Bg: &BgConfig{
Url: DefaultBgConfig.Url,
Repeat: DefaultBgConfig.Repeat,

View file

@ -1,6 +1,7 @@
package sitestore
import (
"encoding/json"
"io/ioutil"
"os"
"path/filepath"
@ -13,11 +14,95 @@ import (
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{
ClientCfg: &db.ClientConfig{
SiteName: "quickshare",
SiteDesc: "simpel file sharing",
AllowSetBg: true,
AutoTheme: true,
Bg: &db.BgConfig{
Url: "/imgs/bg.jpg",
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 {
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_")
if err != nil {
t.Fatal(err)
@ -55,10 +149,14 @@ func TestSiteStore(t *testing.T) {
if err != nil {
t.Fatal("fail to new kvstore", err)
}
// this config does not contain some fields
err = store.Init(&db.SiteConfig{
ClientCfg: &db.ClientConfig{
SiteName: "",
SiteDesc: "",
// AllowSetBg: true,
// AutoTheme: false,
Bg: &db.BgConfig{
Url: "/imgs/bg.jpg",
Repeat: "repeat",
@ -72,6 +170,6 @@ func TestSiteStore(t *testing.T) {
panic(err)
}
testSiteMethods(t, store)
testMigrations(t, store)
})
}