feat(site_store): enable allowSetTheme and autoTheme settings
This commit is contained in:
parent
79ccda2a67
commit
4089e1c319
2 changed files with 116 additions and 12 deletions
|
@ -43,7 +43,9 @@ var (
|
|||
Align: "fixed",
|
||||
BgColor: "#ccc",
|
||||
}
|
||||
BgRepeatValues = map[string]bool{
|
||||
DefaultAllowSetBg = false
|
||||
DefaultAutoTheme = true
|
||||
BgRepeatValues = map[string]bool{
|
||||
"repeat-x": true,
|
||||
"repeat-y": true,
|
||||
"repeat": true,
|
||||
|
@ -123,9 +125,11 @@ type SiteConfig struct {
|
|||
}
|
||||
|
||||
type ClientConfig struct {
|
||||
SiteName string `json:"siteName" yaml:"siteName"`
|
||||
SiteDesc string `json:"siteDesc" yaml:"siteDesc"`
|
||||
Bg *BgConfig `json:"bg" yaml:"bg"`
|
||||
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 {
|
||||
|
@ -172,8 +176,10 @@ func CheckSiteCfg(cfg *SiteConfig, fillDefault bool) error {
|
|||
return errors.New("cfg.ClientCfg not defined")
|
||||
}
|
||||
cfg.ClientCfg = &ClientConfig{
|
||||
SiteName: DefaultSiteName,
|
||||
SiteDesc: DefaultSiteDesc,
|
||||
SiteName: DefaultSiteName,
|
||||
SiteDesc: DefaultSiteDesc,
|
||||
AllowSetBg: DefaultAllowSetBg,
|
||||
AutoTheme: DefaultAutoTheme,
|
||||
Bg: &BgConfig{
|
||||
Url: DefaultBgConfig.Url,
|
||||
Repeat: DefaultBgConfig.Repeat,
|
||||
|
|
|
@ -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",
|
||||
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)
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue