hugo/template/bundle/template_test.go
Phil Pennock 40d05f12a7 Truncated; .Site.Params; First function
* Add `.Truncated` bool to each page; will be set true if the
  `.Summary` is truncated and it's worth showing a "more" link of some
  kind.
* Add `Params` to the site config, defining `.Site.Params` accessible
  to each page; this lets the site maintainer associate arbitrary data
  with names, on a site-wide basis.
* Provide a `First` function to templates:
  * Use-case: `{{range First 5 .Site.Recent}}` or anything else which
    is a simple iterable provided by hugolib
* Tests by me for `.Truncated` and `First`

Also @noahcampbell contributed towards this:

* Add UnitTest for `.Site.Params`:
> Digging into this test case a bit more, I'm realizing that we need
> to create a param test case to ensure that for each type we render
> (page, index, homepage, rss, etc.) that the proper fields are
> represented.  This will help us refactor without fear in the
> future.

Sample config.yaml:

```yaml
title: "Test site"
params:
  Subtitle: "More tests always good"
  AuthorName: "John Doe"
  SidebarRecentLimit: 5
```

Signed-off-by: Noah Campbell <noahcampbell@gmail.com>
2013-11-12 22:49:54 +00:00

56 lines
1.2 KiB
Go

package bundle
import (
"reflect"
"testing"
)
func TestGt(t *testing.T) {
for i, this := range []struct{
left interface{}
right interface{}
leftShouldWin bool
}{
{ 5, 8, false },
{ 8, 5, true },
{ 5, 5, false },
{ -2, 1, false },
{ 2, -5, true },
{ "8", "5", true },
{ "5", "0001", true },
{ []int{100,99}, []int{1,2,3,4}, false },
} {
leftIsBigger := Gt(this.left, this.right)
if leftIsBigger != this.leftShouldWin {
var which string
if leftIsBigger {
which = "expected right to be bigger, but left was"
} else {
which = "expected left to be bigger, but right was"
}
t.Errorf("[%d] %v compared to %v: %s", i, this.left, this.right, which)
}
}
}
func TestFirst(t *testing.T) {
for i, this := range []struct{
count int
sequence interface{}
expect interface{}
} {
{ 2, []string{"a", "b", "c"}, []string{"a", "b"} },
{ 3, []string{"a", "b"}, []string{"a", "b"} },
{ 2, []int{100, 200, 300}, []int{100, 200} },
} {
results, err := First(this.count, this.sequence)
if err != nil {
t.Errorf("[%d] failed: %s", i, err)
continue
}
if !reflect.DeepEqual(results, this.expect) {
t.Errorf("[%d] First %d items, got %v but expected %v", i, this.count, results, this.expect)
}
}
}