From: Vincent Batoufflet <vincent@batoufflet.info>
Date: Wed, 7 May 2014 06:57:37 +0000 (+0200)
Subject: Add Sitemap testing
X-Git-Tag: v0.11~39
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=35926dcf;p=brevno-suite%2Fhugo

Add Sitemap testing
---

diff --git a/hugolib/sitemap_test.go b/hugolib/sitemap_test.go
new file mode 100644
index 00000000..f4921269
--- /dev/null
+++ b/hugolib/sitemap_test.go
@@ -0,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)
+	}
+}