Test GetParam and the various incarnations of frontmatter.
authorNoah Campbell <noahcampbell@gmail.com>
Tue, 13 Aug 2013 00:14:54 +0000 (17:14 -0700)
committerNoah Campbell <noahcampbell@gmail.com>
Tue, 13 Aug 2013 03:25:32 +0000 (20:25 -0700)
hugolib/page_index_test.go [new file with mode: 0644]

diff --git a/hugolib/page_index_test.go b/hugolib/page_index_test.go
new file mode 100644 (file)
index 0000000..49c7504
--- /dev/null
@@ -0,0 +1,79 @@
+package hugolib
+
+import (
+       "strings"
+       "testing"
+)
+
+var PAGE_YAML_WITH_INDEXES_A = `---
+tags: ['a', 'b', 'c']
+categories: 'd'
+---
+YAML frontmatter with tags and categories index.`
+
+var PAGE_YAML_WITH_INDEXES_B = `---
+tags: 
+ - "a"
+ - "b"
+ - "c"
+categories: 'd'
+---
+YAML frontmatter with tags and categories index.`
+
+var PAGE_JSON_WITH_INDEXES = `{
+  "categories": "d",
+  "tags": [
+    "a", 
+    "b", 
+    "c"
+  ]
+}
+JSON Front Matter with tags and categories`
+
+var PAGE_TOML_WITH_INDEXES = `+++
+tags = [ "a", "b", "c" ]
+categories = "d"
++++
+TOML Front Matter with tags and categories`
+
+func TestParseIndexes(t *testing.T) {
+       for _, test := range []string{PAGE_TOML_WITH_INDEXES,
+               PAGE_JSON_WITH_INDEXES,
+               PAGE_YAML_WITH_INDEXES_A,
+               PAGE_YAML_WITH_INDEXES_B,
+       } {
+               p, err := ReadFrom(strings.NewReader(test), "page/with/index")
+               if err != nil {
+                       t.Fatalf("Failed parsing page: %s", err)
+               }
+
+               param := p.GetParam("tags")
+               params := param.([]string)
+
+               expected := []string{"a", "b", "c"}
+               if !compareStringSlice(params, expected) {
+                       t.Errorf("Expected %s: got: %s", expected, params)
+               }
+
+               param = p.GetParam("categories")
+               singleparam := param.(string)
+
+               if singleparam != "d" {
+                       t.Fatalf("Expected: d, got: %s", singleparam)
+               }
+       }
+}
+
+func compareStringSlice(a, b []string) bool {
+       if len(a) != len(b) {
+               return false
+       }
+
+       for i, v := range a {
+               if b[i] != v {
+                       return false
+               }
+       }
+
+       return true
+}