package liquid import ( "fmt" "testing" "github.com/stretchr/testify/require" ) var emptyBindings = map[string]interface{}{} // There's a lot more tests in the filters and tags sub-packages. // This collects a minimal set for testing end-to-end. var liquidTests = []struct{ in, expected string }{ {`{{ page.title }}`, "Introduction"}, {`{% if x %}true{% endif %}`, "true"}, {`{{ "upper" | upcase }}`, "UPPER"}, } var testBindings = map[string]interface{}{ "x": 123, "ar": []string{"first", "second", "third"}, "page": map[string]interface{}{ "title": "Introduction", }, } func TestEngine_ParseAndRenderString(t *testing.T) { engine := NewEngine() for i, test := range liquidTests { t.Run(fmt.Sprint(i+1), func(t *testing.T) { out, err := engine.ParseAndRenderString(test.in, testBindings) require.NoErrorf(t, err, test.in) require.Equalf(t, test.expected, out, test.in) }) } }