mirror of
https://github.com/gohugoio/hugo.git
synced 2024-12-27 19:31:05 +00:00
tpl: Add integration tests for most of the template funcs examples in doc
This commit is contained in:
parent
80e1fd29ab
commit
daaf4eb330
1 changed files with 106 additions and 0 deletions
|
@ -19,6 +19,7 @@ import (
|
|||
"errors"
|
||||
"fmt"
|
||||
"github.com/spf13/cast"
|
||||
"github.com/spf13/viper"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"html/template"
|
||||
"math/rand"
|
||||
|
@ -56,6 +57,111 @@ func tstIsLt(tp tstCompareType) bool {
|
|||
return tp == tstLt || tp == tstLe
|
||||
}
|
||||
|
||||
func TestFuncsInTemplate(t *testing.T) {
|
||||
|
||||
viper.Reset()
|
||||
defer viper.Reset()
|
||||
|
||||
// Add the examples from the docs: As a smoke test and to make sure the examples work.
|
||||
// TODO(bep): Look at the use of safeHTML below; these should maybe return template.HTML
|
||||
// TODO(bep): docs: fix title example
|
||||
in :=
|
||||
`chomp: {{chomp "<p>Blockhead</p>\n" | safeHTML }}
|
||||
dateFormat: {{ dateFormat "Monday, Jan 2, 2006" "2015-01-21" }}
|
||||
lower: {{lower "BatMan"}}
|
||||
markdownify: {{ .Title | markdownify}}
|
||||
pluralize: {{ "cat" | pluralize }}
|
||||
replace: {{ replace "Batman and Robin" "Robin" "Catwoman" }}
|
||||
singularize: {{ "cats" | singularize }}
|
||||
slicestr: {{slicestr "BatMan" 3}}
|
||||
slicestr: {{slicestr "BatMan" 0 3}}
|
||||
substr: {{substr "BatMan" 0 -3}}
|
||||
substr: {{substr "BatMan" 3 3}}
|
||||
title: {{title "Bat man"}}
|
||||
trim: {{ trim "++Batman--" "+-" }}
|
||||
upper: {{upper "BatMan"}}
|
||||
absURL: {{ "mystyle.css" | absURL }}
|
||||
relURL: {{ "mystyle.css" | relURL }}
|
||||
relURL: {{ "http://gohugo.io/" | relURL }}
|
||||
absURL: {{ "http://gohugo.io/" | absURL }}
|
||||
urlize: {{ "Bat Man" | urlize }}
|
||||
base64Encode: {{ "Hello world" | base64Encode }}
|
||||
base64Decode: {{ "SGVsbG8gd29ybGQ=" | base64Decode }}
|
||||
base64Decode: {{ 42 | base64Encode | base64Decode }}
|
||||
add: {{add 1 2}}
|
||||
div: {{div 6 3}}
|
||||
mod: {{mod 15 3}}
|
||||
modBool: {{modBool 15 3}}
|
||||
mul: {{mul 2 3}}
|
||||
sub: {{sub 3 2}}
|
||||
eq: {{ if eq .Section "blog" }}current{{ end }}
|
||||
in: {{ if in "this string contains a substring" "substring" }}Substring found!{{ end }}
|
||||
seq: {{ seq 3 }}
|
||||
sort: {{ slice "B" "C" "A" | sort }}
|
||||
delimit: {{ delimit (slice "A" "B" "C") ", " " and " }}
|
||||
`
|
||||
expected := `chomp: <p>Blockhead</p>
|
||||
dateFormat: Wednesday, Jan 21, 2015
|
||||
lower: batman
|
||||
markdownify: <strong>BatMan</strong>
|
||||
pluralize: cats
|
||||
replace: Batman and Catwoman
|
||||
singularize: cat
|
||||
slicestr: Man
|
||||
slicestr: Bat
|
||||
substr: Bat
|
||||
substr: Man
|
||||
title: Bat Man
|
||||
trim: Batman
|
||||
upper: BATMAN
|
||||
absURL: http://mysite.com/hugo/mystyle.css
|
||||
relURL: /hugo/mystyle.css
|
||||
relURL: http://gohugo.io/
|
||||
absURL: http://gohugo.io/
|
||||
urlize: bat-man
|
||||
base64Encode: SGVsbG8gd29ybGQ=
|
||||
base64Decode: Hello world
|
||||
base64Decode: 42
|
||||
add: 3
|
||||
div: 2
|
||||
mod: 0
|
||||
modBool: true
|
||||
mul: 6
|
||||
sub: 1
|
||||
eq: current
|
||||
in: Substring found!
|
||||
seq: [1 2 3]
|
||||
sort: [A B C]
|
||||
delimit: A, B and C
|
||||
`
|
||||
|
||||
var b bytes.Buffer
|
||||
templ, err := New().New("test").Parse(in)
|
||||
var data struct {
|
||||
Title string
|
||||
Section string
|
||||
}
|
||||
|
||||
data.Title = "**BatMan**"
|
||||
data.Section = "blog"
|
||||
|
||||
viper.Set("baseURL", "http://mysite.com/hugo/")
|
||||
|
||||
if err != nil {
|
||||
t.Fatal("Got error on parse", err)
|
||||
}
|
||||
|
||||
err = templ.Execute(&b, &data)
|
||||
|
||||
if err != nil {
|
||||
t.Fatal("Gott error on execute", err)
|
||||
}
|
||||
|
||||
if b.String() != expected {
|
||||
t.Errorf("Got\n%q\nExpected\n>%q<", b.String(), expected)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCompare(t *testing.T) {
|
||||
for _, this := range []struct {
|
||||
tstCompareType
|
||||
|
|
Loading…
Reference in a new issue