From 4089e1c3190adb2b36a4adce07014b6e72623377 Mon Sep 17 00:00:00 2001 From: hexxa Date: Mon, 4 Apr 2022 22:21:02 +0800 Subject: [PATCH] feat(site_store): enable allowSetTheme and autoTheme settings --- src/db/common.go | 18 +++-- src/db/sitestore/site_store_test.go | 110 ++++++++++++++++++++++++++-- 2 files changed, 116 insertions(+), 12 deletions(-) diff --git a/src/db/common.go b/src/db/common.go index 3885442..f983bc4 100644 --- a/src/db/common.go +++ b/src/db/common.go @@ -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, diff --git a/src/db/sitestore/site_store_test.go b/src/db/sitestore/site_store_test.go index 2f5d361..ea0e280 100644 --- a/src/db/sitestore/site_store_test.go +++ b/src/db/sitestore/site_store_test.go @@ -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) }) }