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 }