github.com/ashleymcnamara/buffalo@v0.8.0/render/template_test.go (about)

     1  package render_test
     2  
     3  import (
     4  	"bytes"
     5  	"io/ioutil"
     6  	"os"
     7  	"path/filepath"
     8  	"strings"
     9  	"testing"
    10  
    11  	"github.com/gobuffalo/buffalo/render"
    12  	"github.com/gobuffalo/plush"
    13  	"github.com/stretchr/testify/require"
    14  )
    15  
    16  func Test_Template(t *testing.T) {
    17  	r := require.New(t)
    18  
    19  	tmpFile, err := ioutil.TempFile("", "test")
    20  	r.NoError(err)
    21  	defer os.Remove(tmpFile.Name())
    22  
    23  	_, err = tmpFile.Write([]byte("<%= name %>"))
    24  	r.NoError(err)
    25  
    26  	type ji func(string, ...string) render.Renderer
    27  
    28  	table := []ji{
    29  		render.New(render.Options{
    30  			TemplateEngine: plush.BuffaloRenderer,
    31  		}).Template,
    32  	}
    33  
    34  	for _, j := range table {
    35  		re := j("foo/bar", tmpFile.Name())
    36  		r.Equal("foo/bar", re.ContentType())
    37  		bb := &bytes.Buffer{}
    38  		err = re.Render(bb, render.Data{"name": "Mark"})
    39  		r.NoError(err)
    40  		r.Equal("Mark", strings.TrimSpace(bb.String()))
    41  	}
    42  }
    43  
    44  func Test_Template_Partial(t *testing.T) {
    45  	r := require.New(t)
    46  
    47  	tPath, err := ioutil.TempDir("", "")
    48  	r.NoError(err)
    49  	defer os.Remove(tPath)
    50  
    51  	partFile, err := os.Create(filepath.Join(tPath, "_foo.html"))
    52  	r.NoError(err)
    53  
    54  	_, err = partFile.Write([]byte("Foo -> <%= name %>"))
    55  	r.NoError(err)
    56  
    57  	tmpFile, err := os.Create(filepath.Join(tPath, "index.html"))
    58  	r.NoError(err)
    59  
    60  	_, err = tmpFile.Write([]byte(`<%= partial("foo.html") %>`))
    61  	r.NoError(err)
    62  
    63  	type ji func(string, ...string) render.Renderer
    64  
    65  	table := []ji{
    66  		render.New(render.Options{
    67  			TemplatesPath:  tPath,
    68  			TemplateEngine: plush.BuffaloRenderer,
    69  		}).Template,
    70  	}
    71  
    72  	for _, j := range table {
    73  		re := j("foo/bar", "index.html")
    74  		r.Equal("foo/bar", re.ContentType())
    75  		bb := &bytes.Buffer{}
    76  		err = re.Render(bb, render.Data{"name": "Mark"})
    77  		r.NoError(err)
    78  		r.Equal("Foo -> Mark", strings.TrimSpace(bb.String()))
    79  	}
    80  }