|
|
|
@@ -17,6 +17,7 @@ import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"path/filepath"
|
|
|
|
|
"testing"
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
jww "github.com/spf13/jwalterweatherman"
|
|
|
|
|
"github.com/spf13/viper"
|
|
|
|
@@ -49,22 +50,7 @@ func TestNodesAsPage(t *testing.T) {
|
|
|
|
|
writeLayoutsForNodeAsPageTests(t)
|
|
|
|
|
writeNodePagesForNodeAsPageTests("", t)
|
|
|
|
|
|
|
|
|
|
// Add some regular pages
|
|
|
|
|
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")
|
|
|
|
@@ -76,40 +62,56 @@ Content Page %02d
|
|
|
|
|
t.Fatalf("Failed to build site: %s", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// date order: home, sect1, sect2, cat/hugo, cat/web, categories
|
|
|
|
|
|
|
|
|
|
assertFileContent(t, filepath.Join("public", "index.html"), false,
|
|
|
|
|
"Index Title: Home Sweet Home!",
|
|
|
|
|
"Home <strong>Content!</strong>",
|
|
|
|
|
"# Pages: 9")
|
|
|
|
|
"# Pages: 9",
|
|
|
|
|
"Date: 2009-01-02",
|
|
|
|
|
"Lastmod: 2009-01-03",
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
assertFileContent(t, filepath.Join("public", "sect1", "regular1", "index.html"), false, "Single Title: Page 01", "Content Page 01")
|
|
|
|
|
|
|
|
|
|
h := s.owner
|
|
|
|
|
nodes := h.findAllPagesByNodeType(PageHome)
|
|
|
|
|
require.Len(t, nodes, 1)
|
|
|
|
|
nodes := h.findAllPagesByNodeTypeNotIn(PagePage)
|
|
|
|
|
require.Len(t, nodes, 6)
|
|
|
|
|
|
|
|
|
|
home := nodes[0]
|
|
|
|
|
home := nodes[5] // oldest
|
|
|
|
|
|
|
|
|
|
require.True(t, home.IsHome())
|
|
|
|
|
require.True(t, home.IsNode())
|
|
|
|
|
require.False(t, home.IsPage())
|
|
|
|
|
|
|
|
|
|
section2 := nodes[3]
|
|
|
|
|
require.Equal(t, "Section2", section2.Title)
|
|
|
|
|
|
|
|
|
|
pages := h.findAllPagesByNodeType(PagePage)
|
|
|
|
|
require.Len(t, pages, 4)
|
|
|
|
|
|
|
|
|
|
first := pages[0]
|
|
|
|
|
|
|
|
|
|
require.False(t, first.IsHome())
|
|
|
|
|
require.False(t, first.IsNode())
|
|
|
|
|
require.True(t, first.IsPage())
|
|
|
|
|
|
|
|
|
|
first.Paginator()
|
|
|
|
|
|
|
|
|
|
// Check Home paginator
|
|
|
|
|
assertFileContent(t, filepath.Join("public", "page", "2", "index.html"), false,
|
|
|
|
|
"Pag: Page 02")
|
|
|
|
|
|
|
|
|
|
// Check Sections
|
|
|
|
|
assertFileContent(t, filepath.Join("public", "sect1", "index.html"), false, "Section Title: Section", "Section1 <strong>Content!</strong>")
|
|
|
|
|
assertFileContent(t, filepath.Join("public", "sect2", "index.html"), false, "Section Title: Section", "Section2 <strong>Content!</strong>")
|
|
|
|
|
assertFileContent(t, filepath.Join("public", "sect1", "index.html"), false,
|
|
|
|
|
"Section Title: Section", "Section1 <strong>Content!</strong>",
|
|
|
|
|
"Date: 2009-01-04",
|
|
|
|
|
"Lastmod: 2009-01-05",
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
assertFileContent(t, filepath.Join("public", "sect2", "index.html"), false,
|
|
|
|
|
"Section Title: Section", "Section2 <strong>Content!</strong>",
|
|
|
|
|
"Date: 2009-01-06",
|
|
|
|
|
"Lastmod: 2009-01-07",
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// Check Sections paginator
|
|
|
|
|
assertFileContent(t, filepath.Join("public", "sect1", "page", "2", "index.html"), false,
|
|
|
|
@@ -121,10 +123,17 @@ Content Page %02d
|
|
|
|
|
|
|
|
|
|
// Check taxonomy lists
|
|
|
|
|
assertFileContent(t, filepath.Join("public", "categories", "hugo", "index.html"), false,
|
|
|
|
|
"Taxonomy Title: Taxonomy Hugo", "Taxonomy Hugo <strong>Content!</strong>")
|
|
|
|
|
"Taxonomy Title: Taxonomy Hugo", "Taxonomy Hugo <strong>Content!</strong>",
|
|
|
|
|
"Date: 2009-01-08",
|
|
|
|
|
"Lastmod: 2009-01-09",
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
assertFileContent(t, filepath.Join("public", "categories", "web", "index.html"), false,
|
|
|
|
|
"Taxonomy Title: Taxonomy Web", "Taxonomy Web <strong>Content!</strong>")
|
|
|
|
|
"Taxonomy Title: Taxonomy Web",
|
|
|
|
|
"Taxonomy Web <strong>Content!</strong>",
|
|
|
|
|
"Date: 2009-01-10",
|
|
|
|
|
"Lastmod: 2009-01-11",
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// Check taxonomy list paginator
|
|
|
|
|
assertFileContent(t, filepath.Join("public", "categories", "hugo", "page", "2", "index.html"), false,
|
|
|
|
@@ -133,7 +142,10 @@ Content Page %02d
|
|
|
|
|
|
|
|
|
|
// Check taxonomy terms
|
|
|
|
|
assertFileContent(t, filepath.Join("public", "categories", "index.html"), false,
|
|
|
|
|
"Taxonomy Terms Title: Taxonomy Term Categories", "Taxonomy Term Categories <strong>Content!</strong>", "k/v: hugo")
|
|
|
|
|
"Taxonomy Terms Title: Taxonomy Term Categories", "Taxonomy Term Categories <strong>Content!</strong>", "k/v: hugo",
|
|
|
|
|
"Date: 2009-01-12",
|
|
|
|
|
"Lastmod: 2009-01-13",
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// There are no pages to paginate over in the taxonomy terms.
|
|
|
|
|
|
|
|
|
@@ -174,21 +186,35 @@ func TestNodesWithNoContentFile(t *testing.T) {
|
|
|
|
|
require.Len(t, homePage.Pages, 9) // Alias
|
|
|
|
|
|
|
|
|
|
assertFileContent(t, filepath.Join("public", "index.html"), false,
|
|
|
|
|
"Index Title: Hugo Rocks!")
|
|
|
|
|
"Index Title: Hugo Rocks!",
|
|
|
|
|
"Date: 2010-06-12",
|
|
|
|
|
"Lastmod: 2010-06-13",
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// Taxonomy list
|
|
|
|
|
assertFileContent(t, filepath.Join("public", "categories", "hugo", "index.html"), false,
|
|
|
|
|
"Taxonomy Title: Hugo")
|
|
|
|
|
"Taxonomy Title: Hugo",
|
|
|
|
|
"Date: 2010-06-12",
|
|
|
|
|
"Lastmod: 2010-06-13",
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// Taxonomy terms
|
|
|
|
|
assertFileContent(t, filepath.Join("public", "categories", "index.html"), false,
|
|
|
|
|
"Taxonomy Terms Title: Categories")
|
|
|
|
|
"Taxonomy Terms Title: Categories",
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// Sections
|
|
|
|
|
assertFileContent(t, filepath.Join("public", "sect1", "index.html"), false,
|
|
|
|
|
"Section Title: Sect1s")
|
|
|
|
|
"Section Title: Sect1s",
|
|
|
|
|
"Date: 2010-06-12",
|
|
|
|
|
"Lastmod: 2010-06-13",
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
assertFileContent(t, filepath.Join("public", "sect2", "index.html"), false,
|
|
|
|
|
"Section Title: Sect2s")
|
|
|
|
|
"Section Title: Sect2s",
|
|
|
|
|
"Date: 2008-07-06",
|
|
|
|
|
"Lastmod: 2008-07-09",
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// RSS
|
|
|
|
|
assertFileContent(t, filepath.Join("public", "customrss.xml"), false, "Recent content in Hugo Rocks! on Hugo Rocks!", "<rss")
|
|
|
|
@@ -321,8 +347,8 @@ categories: [
|
|
|
|
|
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")
|
|
|
|
|
assertFileContent(t, filepath.Join("public", "categories", "hugo", "index.html"), true, "Taxonomy Title: Hugo", "# Pages: 5")
|
|
|
|
|
assertFileContent(t, filepath.Join("public", "categories", "home", "index.html"), true, "Taxonomy Title: Home", "# Pages: 1")
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -415,20 +441,30 @@ func writeRegularPagesForNodeAsPageTestsWithLang(t *testing.T, lang string) {
|
|
|
|
|
langStr = lang + "."
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
format := "2006-01-02"
|
|
|
|
|
|
|
|
|
|
date, _ := time.Parse(format, "2010-06-15")
|
|
|
|
|
|
|
|
|
|
for i := 1; i <= 4; i++ {
|
|
|
|
|
sect := "sect1"
|
|
|
|
|
if i > 2 {
|
|
|
|
|
sect = "sect2"
|
|
|
|
|
|
|
|
|
|
date, _ = time.Parse(format, "2008-07-15") // Nodes are placed in 2009
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
date = date.Add(-24 * time.Duration(i) * time.Hour)
|
|
|
|
|
writeSource(t, filepath.Join("content", sect, fmt.Sprintf("regular%d.%smd", i, langStr)), fmt.Sprintf(`---
|
|
|
|
|
title: Page %02d
|
|
|
|
|
lastMod : %q
|
|
|
|
|
date : %q
|
|
|
|
|
categories: [
|
|
|
|
|
"Hugo",
|
|
|
|
|
"Web"
|
|
|
|
|
]
|
|
|
|
|
---
|
|
|
|
|
Content Page %02d
|
|
|
|
|
`, i, i))
|
|
|
|
|
`, i, date.Add(time.Duration(i)*-24*time.Hour).Format(time.RFC822), date.Add(time.Duration(i)*-2*24*time.Hour).Format(time.RFC822), i))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -440,41 +476,56 @@ func writeNodePagesForNodeAsPageTests(lang string, t *testing.T) {
|
|
|
|
|
filename = fmt.Sprintf("_index.%s.md", lang)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
writeSource(t, filepath.Join("content", filename), `---
|
|
|
|
|
format := "2006-01-02"
|
|
|
|
|
|
|
|
|
|
date, _ := time.Parse(format, "2009-01-01")
|
|
|
|
|
|
|
|
|
|
writeSource(t, filepath.Join("content", filename), fmt.Sprintf(`---
|
|
|
|
|
title: Home Sweet Home!
|
|
|
|
|
date : %q
|
|
|
|
|
lastMod : %q
|
|
|
|
|
---
|
|
|
|
|
Home **Content!**
|
|
|
|
|
`)
|
|
|
|
|
`, date.Add(1*24*time.Hour).Format(time.RFC822), date.Add(2*24*time.Hour).Format(time.RFC822)))
|
|
|
|
|
|
|
|
|
|
writeSource(t, filepath.Join("content", "sect1", filename), `---
|
|
|
|
|
writeSource(t, filepath.Join("content", "sect1", filename), fmt.Sprintf(`---
|
|
|
|
|
title: Section1
|
|
|
|
|
date : %q
|
|
|
|
|
lastMod : %q
|
|
|
|
|
---
|
|
|
|
|
Section1 **Content!**
|
|
|
|
|
`)
|
|
|
|
|
|
|
|
|
|
writeSource(t, filepath.Join("content", "sect2", filename), `---
|
|
|
|
|
`, date.Add(3*24*time.Hour).Format(time.RFC822), date.Add(4*24*time.Hour).Format(time.RFC822)))
|
|
|
|
|
writeSource(t, filepath.Join("content", "sect2", filename), fmt.Sprintf(`---
|
|
|
|
|
title: Section2
|
|
|
|
|
date : %q
|
|
|
|
|
lastMod : %q
|
|
|
|
|
---
|
|
|
|
|
Section2 **Content!**
|
|
|
|
|
`)
|
|
|
|
|
`, date.Add(5*24*time.Hour).Format(time.RFC822), date.Add(6*24*time.Hour).Format(time.RFC822)))
|
|
|
|
|
|
|
|
|
|
writeSource(t, filepath.Join("content", "categories", "hugo", filename), `---
|
|
|
|
|
writeSource(t, filepath.Join("content", "categories", "hugo", filename), fmt.Sprintf(`---
|
|
|
|
|
title: Taxonomy Hugo
|
|
|
|
|
date : %q
|
|
|
|
|
lastMod : %q
|
|
|
|
|
---
|
|
|
|
|
Taxonomy Hugo **Content!**
|
|
|
|
|
`)
|
|
|
|
|
`, date.Add(7*24*time.Hour).Format(time.RFC822), date.Add(8*24*time.Hour).Format(time.RFC822)))
|
|
|
|
|
|
|
|
|
|
writeSource(t, filepath.Join("content", "categories", "web", filename), `---
|
|
|
|
|
writeSource(t, filepath.Join("content", "categories", "web", filename), fmt.Sprintf(`---
|
|
|
|
|
title: Taxonomy Web
|
|
|
|
|
date : %q
|
|
|
|
|
lastMod : %q
|
|
|
|
|
---
|
|
|
|
|
Taxonomy Web **Content!**
|
|
|
|
|
`)
|
|
|
|
|
`, date.Add(9*24*time.Hour).Format(time.RFC822), date.Add(10*24*time.Hour).Format(time.RFC822)))
|
|
|
|
|
|
|
|
|
|
writeSource(t, filepath.Join("content", "categories", filename), `---
|
|
|
|
|
writeSource(t, filepath.Join("content", "categories", filename), fmt.Sprintf(`---
|
|
|
|
|
title: Taxonomy Term Categories
|
|
|
|
|
date : %q
|
|
|
|
|
lastMod : %q
|
|
|
|
|
---
|
|
|
|
|
Taxonomy Term Categories **Content!**
|
|
|
|
|
`)
|
|
|
|
|
`, date.Add(11*24*time.Hour).Format(time.RFC822), date.Add(12*24*time.Hour).Format(time.RFC822)))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func writeLayoutsForNodeAsPageTests(t *testing.T) {
|
|
|
|
@@ -490,11 +541,15 @@ Index Content: {{ .Content }}
|
|
|
|
|
Menu Item: {{ .Name }}
|
|
|
|
|
{{ end }}
|
|
|
|
|
{{ end }}
|
|
|
|
|
Date: {{ .Date.Format "2006-01-02" }}
|
|
|
|
|
Lastmod: {{ .Lastmod.Format "2006-01-02" }}
|
|
|
|
|
`)
|
|
|
|
|
|
|
|
|
|
writeSource(t, filepath.Join("layouts", "_default", "single.html"), `
|
|
|
|
|
Single Title: {{ .Title }}
|
|
|
|
|
Single Content: {{ .Content }}
|
|
|
|
|
Date: {{ .Date.Format "2006-01-02" }}
|
|
|
|
|
Lastmod: {{ .Lastmod.Format "2006-01-02" }}
|
|
|
|
|
`)
|
|
|
|
|
|
|
|
|
|
writeSource(t, filepath.Join("layouts", "_default", "section.html"), `
|
|
|
|
@@ -504,6 +559,8 @@ Section Content: {{ .Content }}
|
|
|
|
|
{{ range .Paginator.Pages }}
|
|
|
|
|
Pag: {{ .Title }}
|
|
|
|
|
{{ end }}
|
|
|
|
|
Date: {{ .Date.Format "2006-01-02" }}
|
|
|
|
|
Lastmod: {{ .Lastmod.Format "2006-01-02" }}
|
|
|
|
|
`)
|
|
|
|
|
|
|
|
|
|
// Taxonomy lists
|
|
|
|
@@ -514,6 +571,8 @@ Taxonomy Content: {{ .Content }}
|
|
|
|
|
{{ range .Paginator.Pages }}
|
|
|
|
|
Pag: {{ .Title }}
|
|
|
|
|
{{ end }}
|
|
|
|
|
Date: {{ .Date.Format "2006-01-02" }}
|
|
|
|
|
Lastmod: {{ .Lastmod.Format "2006-01-02" }}
|
|
|
|
|
`)
|
|
|
|
|
|
|
|
|
|
// Taxonomy terms
|
|
|
|
@@ -523,5 +582,7 @@ Taxonomy Terms Content: {{ .Content }}
|
|
|
|
|
{{ range $key, $value := .Data.Terms }}
|
|
|
|
|
k/v: {{ $key }} / {{ printf "%=v" $value }}
|
|
|
|
|
{{ end }}
|
|
|
|
|
Date: {{ .Date.Format "2006-01-02" }}
|
|
|
|
|
Lastmod: {{ .Lastmod.Format "2006-01-02" }}
|
|
|
|
|
`)
|
|
|
|
|
}
|
|
|
|
|