Fix Params case handling for menu items defined in site config
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 20 Jul 2021 09:32:50 +0000 (11:32 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 20 Jul 2021 15:50:59 +0000 (17:50 +0200)
Fixes #8775

hugolib/menu_test.go
navigation/menu.go

index 33dd14911db54a62e98bfc686d1ab278ae31500e..c43878090970ca25f622c2611ccd7daa2b1b3160 100644 (file)
@@ -351,49 +351,51 @@ menu:
 }
 
 func TestMenuParams(t *testing.T) {
-       b := newTestSitesBuilder(t).WithSimpleConfigFile()
+       b := newTestSitesBuilder(t).WithConfigFile("toml", `
+[[menus.main]]
+identifier = "contact"
+title = "Contact Us"
+url = "mailto:noreply@example.com"
+weight = 300
+[menus.main.params]
+foo = "foo_config"     
+key2 = "key2_config"   
+camelCase = "camelCase_config" 
+`)
 
        b.WithTemplatesAdded("index.html", `
 Main: {{ len .Site.Menus.main }}
 {{ range .Site.Menus.main }}
-* Main|{{ .Name }}: {{ .URL }}|{{ .Params }}
+foo: {{ .Params.foo }}
+key2: {{ .Params.KEy2 }}
+camelCase: {{ .Params.camelcase }}
 {{ end }}
 `)
 
-       b.WithContent("blog/page1.md", `
----
-title: "P1"
-menu: main
----
-
-`)
-
-       b.WithContent("blog/page2.md", `
----
-title: "P2"
-menu: main
----
-
-`)
-
-       b.WithContent("blog/page3.md", `
+       b.WithContent("_index.md", `
 ---
-title: "P3"
+title: "Home"
 menu:
   main:
-    weight: 30
+    weight: 10
     params:
-      foo: "bar"
-      key2: "value2"
+      foo: "foo_content"
+      key2: "key2_content"
+      camelCase: "camelCase_content"
 ---
 `)
 
        b.Build(BuildCfg{})
 
-       b.AssertFileContent("public/index.html",
-               "Main: 3",
-               "Main|P3: /blog/page3/|map[foo:bar key2:value2]",
-               "Main|P1: /blog/page1/|map[]",
-               "Main|P2: /blog/page2/|map[]",
-       )
+       b.AssertFileContent("public/index.html", `
+Main: 2
+
+foo: foo_content
+key2: key2_content
+camelCase: camelCase_content
+
+foo: foo_config
+key2: key2_config
+camelCase: camelCase_config
+`)
 }
index 159c4971029c6f6fd4500904f17be12e240de654..3ef06f6a97e81510bce683b4823b0cdd032f1ec6 100644 (file)
@@ -131,7 +131,8 @@ func (m *MenuEntry) MarshallMap(ime map[string]interface{}) {
                case "parent":
                        m.Parent = cast.ToString(v)
                case "params":
-                       m.Params = maps.ToStringMap(v)
+                       m.Params = maps.MustToParamsAndPrepare(v)
+
                }
        }
 }