1
0
mirror of https://github.com/danog/liquid.git synced 2024-11-30 10:39:01 +01:00
liquid/chunks/render_test.go

61 lines
1.4 KiB
Go
Raw Normal View History

2017-06-26 15:36:52 +02:00
package chunks
2017-06-25 17:23:20 +02:00
import (
2017-06-25 23:00:00 +02:00
"bytes"
"fmt"
2017-06-25 17:23:20 +02:00
"testing"
"github.com/stretchr/testify/require"
)
2017-06-27 00:55:12 +02:00
var renderTests = []struct{ in, expected string }{
2017-06-27 17:12:58 +02:00
// {"{%if syntax error%}{%endif%}", "parse error"},
2017-06-29 18:20:16 +02:00
{`{{ 12 }}`, "12"},
{`{{ x }}`, "123"},
{`{{ page.title }}`, "Introduction"},
{`{{ ar[1] }}`, "second"},
2017-06-26 15:33:07 +02:00
}
2017-06-30 22:46:17 +02:00
var renderTestBindings = map[string]interface{}{
2017-06-26 21:36:05 +02:00
"x": 123,
"obj": map[string]interface{}{
"a": 1,
},
2017-06-27 00:55:12 +02:00
"animals": []string{"zebra", "octopus", "giraffe", "Sally Snake"},
"pages": []map[string]interface{}{
{"category": "business"},
{"category": "celebrities"},
{},
{"category": "lifestyle"},
{"category": "sports"},
{},
{"category": "technology"},
},
"sort_prop": []map[string]interface{}{
{"weight": 1},
{"weight": 5},
{"weight": 3},
{"weight": nil},
},
2017-06-26 15:33:07 +02:00
"ar": []string{"first", "second", "third"},
"page": map[string]interface{}{
"title": "Introduction",
},
2017-06-30 22:46:17 +02:00
}
2017-06-26 15:33:07 +02:00
2017-06-27 00:55:12 +02:00
func TestRender(t *testing.T) {
2017-06-30 22:46:17 +02:00
settings := NewSettings()
context := NewContext(renderTestBindings, settings)
2017-06-27 00:55:12 +02:00
for i, test := range renderTests {
2017-06-29 18:20:16 +02:00
t.Run(fmt.Sprintf("%02d", i+1), func(t *testing.T) {
tokens := Scan(test.in, "")
2017-06-30 22:46:17 +02:00
ast, err := settings.Parse(tokens)
2017-06-26 15:33:07 +02:00
require.NoErrorf(t, err, test.in)
buf := new(bytes.Buffer)
2017-06-30 22:46:17 +02:00
err = ast.Render(buf, context)
2017-06-27 00:55:12 +02:00
require.NoErrorf(t, err, test.in)
require.Equalf(t, test.expected, buf.String(), test.in)
})
}
}