github.com/rotblauer/buffalo@v0.7.1-0.20170112214545-7aa55ef80dd3/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/stretchr/testify/require"
    13  )
    14  
    15  func Test_Template(t *testing.T) {
    16  	r := require.New(t)
    17  
    18  	tmpFile, err := ioutil.TempFile("", "test")
    19  	r.NoError(err)
    20  	defer os.Remove(tmpFile.Name())
    21  
    22  	_, err = tmpFile.Write([]byte("{{name}}"))
    23  	r.NoError(err)
    24  
    25  	type ji func(string, ...string) render.Renderer
    26  
    27  	table := []ji{
    28  		render.Template,
    29  		render.New(render.Options{}).Template,
    30  	}
    31  
    32  	for _, j := range table {
    33  		re := j("foo/bar", tmpFile.Name())
    34  		r.Equal("foo/bar", re.ContentType())
    35  		bb := &bytes.Buffer{}
    36  		err = re.Render(bb, render.Data{"name": "Mark"})
    37  		r.NoError(err)
    38  		r.Equal("Mark", strings.TrimSpace(bb.String()))
    39  	}
    40  }
    41  
    42  func Test_Template_Partial(t *testing.T) {
    43  	r := require.New(t)
    44  
    45  	tPath, err := ioutil.TempDir("", "")
    46  	r.NoError(err)
    47  	defer os.Remove(tPath)
    48  
    49  	partFile, err := os.Create(filepath.Join(tPath, "_foo.html"))
    50  	r.NoError(err)
    51  
    52  	_, err = partFile.Write([]byte("Foo -> {{name}}"))
    53  	r.NoError(err)
    54  
    55  	tmpFile, err := os.Create(filepath.Join(tPath, "index.html"))
    56  	r.NoError(err)
    57  
    58  	_, err = tmpFile.Write([]byte(`{{partial "foo.html"}}`))
    59  	r.NoError(err)
    60  
    61  	type ji func(string, ...string) render.Renderer
    62  
    63  	table := []ji{
    64  		render.New(render.Options{TemplatesPath: tPath}).Template,
    65  	}
    66  
    67  	for _, j := range table {
    68  		re := j("foo/bar", "index.html")
    69  		r.Equal("foo/bar", re.ContentType())
    70  		bb := &bytes.Buffer{}
    71  		err = re.Render(bb, render.Data{"name": "Mark"})
    72  		r.NoError(err)
    73  		r.Equal("Foo -> Mark", strings.TrimSpace(bb.String()))
    74  	}
    75  }
    76  
    77  func Test_Template_WithCaching(t *testing.T) {
    78  	r := require.New(t)
    79  
    80  	tmpFile, err := ioutil.TempFile("", "test")
    81  	r.NoError(err)
    82  	defer os.Remove(tmpFile.Name())
    83  
    84  	_, err = tmpFile.Write([]byte("{{name}}"))
    85  	r.NoError(err)
    86  
    87  	type ji func(string, ...string) render.Renderer
    88  
    89  	table := []ji{
    90  		render.Template,
    91  		render.New(render.Options{
    92  			CacheTemplates: true,
    93  		}).Template,
    94  	}
    95  
    96  	for _, j := range table {
    97  		re := j("foo/bar", tmpFile.Name())
    98  		r.Equal("foo/bar", re.ContentType())
    99  		bb := &bytes.Buffer{}
   100  		err = re.Render(bb, render.Data{"name": "Mark"})
   101  		r.NoError(err)
   102  		r.Equal("Mark", strings.TrimSpace(bb.String()))
   103  	}
   104  }