node to page: Handle taxonomies on home page etc.
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 9 Nov 2016 19:55:42 +0000 (20:55 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 22 Nov 2016 08:57:03 +0000 (09:57 +0100)
Updates #2297

hugolib/node_as_page_test.go
hugolib/site.go

index cde29e9d6ac809339d44804c5a52a648d925804e..b5c4944004886ba7421e7e6d4b844b7c44e614d7 100644 (file)
@@ -152,22 +152,7 @@ func TestNodesWithNoContentFile(t *testing.T) {
        testCommonResetState()
 
        writeLayoutsForNodeAsPageTests(t)
-
-       for i := 1; i <= 4; i++ {
-               sect := "sect1"
-               if i > 2 {
-                       sect = "sect2"
-               }
-               writeSource(t, filepath.Join("content", sect, fmt.Sprintf("regular%d.md", i)), fmt.Sprintf(`---
-title: Page %02d
-categories:  [
-        "Hugo",
-               "Web"
-]
----
-Content Page %02d
-`, i, i))
-       }
+       writeRegularPagesForNodeAsPageTests(t)
 
        viper.Set("paginate", 1)
        viper.Set("title", "Hugo Rocks!")
@@ -238,21 +223,7 @@ title = "Hugo in English"
 `)
 
        for _, lang := range []string{"nn", "en"} {
-               for i := 1; i <= 4; i++ {
-                       sect := "sect1"
-                       if i > 2 {
-                               sect = "sect2"
-                       }
-                       writeSource(t, filepath.Join("content", sect, fmt.Sprintf("regular%d.%s.md", i, lang)), fmt.Sprintf(`---
-title: Page %02d
-categories:  [
-        "Hugo",
-               "Web"
-]
----
-Content Page %02d
-`, i, i))
-               }
+               writeRegularPagesForNodeAsPageTestsWithLang(t, lang)
        }
 
        // Only write node pages for the English side of the fence
@@ -324,6 +295,66 @@ Content Page %02d
 
 }
 
+func TestNodesWithTaxonomies(t *testing.T) {
+       //jww.SetStdoutThreshold(jww.LevelDebug)
+       //defer jww.SetStdoutThreshold(jww.LevelFatal)
+       testCommonResetState()
+
+       writeLayoutsForNodeAsPageTests(t)
+       writeRegularPagesForNodeAsPageTests(t)
+
+       writeSource(t, filepath.Join("content", "_index.md"), `---
+title: Home With Taxonomies
+categories:  [
+        "Hugo",
+               "Home"
+]
+---
+`)
+
+       viper.Set("paginate", 1)
+       viper.Set("title", "Hugo Rocks!")
+       viper.Set("rssURI", "customrss.xml")
+
+       s := newSiteDefaultLang()
+
+       if err := buildAndRenderSite(s); err != nil {
+               t.Fatalf("Failed to build site: %s", err)
+       }
+
+       assertFileContent(t, filepath.Join("public", "categories", "hugo", "index.html"), true, "Taxonomy Title: Hugo", "# Pages: 5", "Pag: Home With Taxonomies")
+       assertFileContent(t, filepath.Join("public", "categories", "home", "index.html"), true, "Taxonomy Title: Home", "# Pages: 1", "Pag: Home With Taxonomies")
+
+}
+
+func writeRegularPagesForNodeAsPageTests(t *testing.T) {
+       writeRegularPagesForNodeAsPageTestsWithLang(t, "")
+}
+
+func writeRegularPagesForNodeAsPageTestsWithLang(t *testing.T, lang string) {
+       var langStr string
+
+       if lang != "" {
+               langStr = lang + "."
+       }
+
+       for i := 1; i <= 4; i++ {
+               sect := "sect1"
+               if i > 2 {
+                       sect = "sect2"
+               }
+               writeSource(t, filepath.Join("content", sect, fmt.Sprintf("regular%d.%smd", i, langStr)), fmt.Sprintf(`---
+title: Page %02d
+categories:  [
+        "Hugo",
+               "Web"
+]
+---
+Content Page %02d
+`, i, i))
+       }
+}
+
 func writeNodePagesForNodeAsPageTests(lang string, t *testing.T) {
 
        filename := "_index.md"
index 026f292cf3c2de288b4511aa2852ef4efa40dfba..375ffaac100bb1f93670623d9cf077a3f99da282 100644 (file)
@@ -1340,8 +1340,6 @@ func (s *Site) buildSiteMeta() (err error) {
                return
        }
 
-       // TODO(bep) np order
-       // assembleTaxonomies: Needs pages (temp lookup) (maybe later nodes)
        s.assembleTaxonomies()
 
        // TODO(bep) np
@@ -1497,8 +1495,8 @@ func (s *Site) assembleTaxonomies() {
        for singular, plural := range taxonomies {
                s.Taxonomies[plural] = make(Taxonomy)
                s.taxonomiesPluralSingular[plural] = singular
-               // TODO(np) tax other nodes
-               for _, p := range s.findPagesByNodeType(NodePage) {
+
+               for _, p := range s.Nodes {
                        vals := p.getParam(plural, !s.Info.preserveTaxonomyNames)
                        weight := p.GetParam(plural + "_weight")
                        if weight == nil {