shithub: hugo

Download patch

ref: 35926dcf3742df915a9d535d7178a363c666e840
parent: 6049c3a10cedd4b05a23130811671ce8712b76f9
author: Vincent Batoufflet <[email protected]>
date: Wed May 7 04:57:37 EDT 2014

Add Sitemap testing

--- /dev/null
+++ b/hugolib/sitemap_test.go
@@ -1,0 +1,64 @@
+package hugolib
+
+import (
+	"bytes"
+	"testing"
+
+	"github.com/spf13/hugo/source"
+	"github.com/spf13/hugo/target"
+	"github.com/spf13/viper"
+)
+
+const SITEMAP_TEMPLATE = `<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
+  {{ range .Data.Pages }}
+  <url>
+    <loc>{{ .Permalink }}</loc>
+    <lastmod>{{ safeHtml ( .Date.Format "2006-01-02T15:04:05-07:00" ) }}</lastmod>{{ with .Sitemap.ChangeFreq }}
+    <changefreq>{{ . }}</changefreq>{{ end }}{{ if ge .Sitemap.Priority 0.0 }}
+    <priority>{{ .Sitemap.Priority }}</priority>{{ end }}
+  </url>
+  {{ end }}
+</urlset>`
+
+func TestSitemapOutput(t *testing.T) {
+	files := make(map[string][]byte)
+	target := &target.InMemoryTarget{Files: files}
+
+	viper.Set("baseurl", "http://auth/bub/")
+
+	s := &Site{
+		Target: target,
+		Source: &source.InMemorySource{ByteSource: WEIGHTED_SOURCES},
+	}
+
+	s.initializeSiteInfo()
+
+	s.prepTemplates()
+	s.addTemplate("sitemap.xml", SITEMAP_TEMPLATE)
+
+	if err := s.CreatePages(); err != nil {
+		t.Fatalf("Unable to create pages: %s", err)
+	}
+
+	if err := s.BuildSiteMeta(); err != nil {
+		t.Fatalf("Unable to build site metadata: %s", err)
+	}
+
+	if err := s.RenderHomePage(); err != nil {
+		t.Fatalf("Unable to RenderHomePage: %s", err)
+	}
+
+	if err := s.RenderSitemap(); err != nil {
+		t.Fatalf("Unable to RenderSitemap: %s", err)
+	}
+
+	if _, ok := files["sitemap.xml"]; !ok {
+		t.Errorf("Unable to locate: sitemap.xml")
+		t.Logf("%q", files)
+	}
+
+	sitemap, _ := files["sitemap.xml"]
+	if !bytes.HasPrefix(sitemap, []byte("<?xml")) {
+		t.Errorf("Sitemap file should start with <?xml. %s", sitemap)
+	}
+}