github.com/rotblauer/buffalo@v0.7.1-0.20170112214545-7aa55ef80dd3/render/html_test.go (about)

     1  package render_test
     2  
     3  import (
     4  	"bytes"
     5  	"io/ioutil"
     6  	"os"
     7  	"strings"
     8  	"testing"
     9  
    10  	"github.com/gobuffalo/buffalo/render"
    11  	"github.com/stretchr/testify/require"
    12  )
    13  
    14  func Test_HTML(t *testing.T) {
    15  	r := require.New(t)
    16  
    17  	tmpFile, err := ioutil.TempFile("", "test")
    18  	r.NoError(err)
    19  	defer os.Remove(tmpFile.Name())
    20  
    21  	_, err = tmpFile.Write([]byte("{{name}}"))
    22  	r.NoError(err)
    23  
    24  	type ji func(...string) render.Renderer
    25  	t.Run("without a layout", func(st *testing.T) {
    26  		r := require.New(st)
    27  
    28  		table := []ji{
    29  			render.HTML,
    30  			render.New(render.Options{}).HTML,
    31  		}
    32  
    33  		for _, j := range table {
    34  			re := j(tmpFile.Name())
    35  			r.Equal("text/html", re.ContentType())
    36  			bb := &bytes.Buffer{}
    37  			err = re.Render(bb, map[string]interface{}{"name": "Mark"})
    38  			r.NoError(err)
    39  			r.Equal("Mark", strings.TrimSpace(bb.String()))
    40  		}
    41  	})
    42  
    43  	t.Run("with a layout", func(st *testing.T) {
    44  		r := require.New(st)
    45  
    46  		layout, err := ioutil.TempFile("", "test")
    47  		r.NoError(err)
    48  		defer os.Remove(layout.Name())
    49  
    50  		_, err = layout.Write([]byte("<body>{{yield}}</body>"))
    51  		r.NoError(err)
    52  
    53  		re := render.New(render.Options{HTMLLayout: layout.Name()}).HTML(tmpFile.Name())
    54  
    55  		r.Equal("text/html", re.ContentType())
    56  		bb := &bytes.Buffer{}
    57  		err = re.Render(bb, map[string]interface{}{"name": "Mark"})
    58  		r.NoError(err)
    59  		r.Equal("<body>Mark</body>", strings.TrimSpace(bb.String()))
    60  	})
    61  }