Commit a673a85d authored by Michael's avatar Michael

added tests config/json_test that test missing key usecases. created a template…

added tests config/json_test that test missing key usecases. created a template function to fetch AppConfig values
parent 61008fe7
...@@ -100,4 +100,28 @@ func TestJson(t *testing.T) { ...@@ -100,4 +100,28 @@ func TestJson(t *testing.T) {
t.Fatal("get host err") t.Fatal("get host err")
} }
} }
if _, err := jsonconf.Int("unknown"); err == nil {
t.Error("unknown keys should return an error when expecting an Int")
}
if _, err := jsonconf.Int64("unknown"); err == nil {
t.Error("unknown keys should return an error when expecting an Int64")
}
if _, err := jsonconf.Float("unknown"); err == nil {
t.Error("unknown keys should return an error when expecting a Float")
}
if _, err := jsonconf.DIY("unknown"); err == nil {
t.Error("unknown keys should return an error when expecting an interface{}")
}
if val := jsonconf.String("unknown"); val != "" {
t.Error("unknown keys should return an empty string when expecting a String")
}
if _, err := jsonconf.Bool("unknown"); err == nil {
t.Error("unknown keys should return an error when expecting a Bool")
}
} }
...@@ -44,6 +44,7 @@ func init() { ...@@ -44,6 +44,7 @@ func init() {
beegoTplFuncMap["renderform"] = RenderForm beegoTplFuncMap["renderform"] = RenderForm
beegoTplFuncMap["assets_js"] = AssetsJs beegoTplFuncMap["assets_js"] = AssetsJs
beegoTplFuncMap["assets_css"] = AssetsCss beegoTplFuncMap["assets_css"] = AssetsCss
beegoTplFuncMap["config"] = Config
// go1.2 added template funcs // go1.2 added template funcs
// Comparisons // Comparisons
......
...@@ -131,6 +131,43 @@ func Compare(a, b interface{}) (equal bool) { ...@@ -131,6 +131,43 @@ func Compare(a, b interface{}) (equal bool) {
return return
} }
func Config(returnType, key string, defaultVal interface{}) (value interface{}, err error) {
switch returnType {
case "String":
value = AppConfig.String(key)
case "Bool":
value, err = AppConfig.Bool(key)
case "Int":
value, err = AppConfig.Int(key)
case "Int64":
value, err = AppConfig.Int64(key)
case "Float":
value, err = AppConfig.Float(key)
case "DIY":
value, err = AppConfig.DIY(key)
default:
err = errors.New("Config keys must be of type String, Bool, Int, Int64, Float, or DIY!")
}
if err != nil {
if reflect.TypeOf(returnType) != reflect.TypeOf(defaultVal) {
err = errors.New("defaultVal type does not match returnType!")
} else {
value, err = defaultVal, nil
}
} else if reflect.TypeOf(value).Kind() == reflect.String {
if value == "" {
if reflect.TypeOf(defaultVal).Kind() != reflect.String {
err = errors.New("defaultVal type must be a String if the returnType is a String")
} else {
value = defaultVal.(string)
}
}
}
return
}
// Convert string to template.HTML type. // Convert string to template.HTML type.
func Str2html(raw string) template.HTML { func Str2html(raw string) template.HTML {
return template.HTML(raw) return template.HTML(raw)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment