github.com/bketelsen/buffalo@v0.9.5/render/markdown_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_Markdown(t *testing.T) {
    17  	r := require.New(t)
    18  
    19  	tmpDir := filepath.Join(os.TempDir(), "markdown_test")
    20  	err := os.MkdirAll(tmpDir, 0766)
    21  	r.NoError(err)
    22  	defer os.Remove(tmpDir)
    23  
    24  	tmpFile, err := os.Create(filepath.Join(tmpDir, "t.md"))
    25  	r.NoError(err)
    26  
    27  	_, err = tmpFile.Write([]byte("<%= name %>"))
    28  	r.NoError(err)
    29  
    30  	type ji func(...string) render.Renderer
    31  	t.Run("without a layout", func(st *testing.T) {
    32  		r := require.New(st)
    33  
    34  		table := []ji{
    35  			render.New(render.Options{
    36  				TemplateEngine: plush.BuffaloRenderer,
    37  			}).HTML,
    38  		}
    39  
    40  		for _, j := range table {
    41  			re := j(tmpFile.Name())
    42  			r.Equal("text/html", re.ContentType())
    43  			bb := &bytes.Buffer{}
    44  			err = re.Render(bb, map[string]interface{}{"name": "Mark"})
    45  			r.NoError(err)
    46  			r.Equal("<p>Mark</p>", strings.TrimSpace(bb.String()))
    47  		}
    48  	})
    49  
    50  	t.Run("with a layout", func(st *testing.T) {
    51  		r := require.New(st)
    52  
    53  		layout, err := ioutil.TempFile("", "test")
    54  		r.NoError(err)
    55  		defer os.Remove(layout.Name())
    56  
    57  		_, err = layout.Write([]byte("<body><%= yield %></body>"))
    58  		r.NoError(err)
    59  
    60  		re := render.New(render.Options{
    61  			HTMLLayout:     layout.Name(),
    62  			TemplateEngine: plush.BuffaloRenderer,
    63  		}).HTML(tmpFile.Name())
    64  
    65  		r.Equal("text/html", re.ContentType())
    66  		bb := &bytes.Buffer{}
    67  		err = re.Render(bb, map[string]interface{}{"name": "Mark"})
    68  		r.NoError(err)
    69  		r.Equal("<body><p>Mark</p>\n</body>", strings.TrimSpace(bb.String()))
    70  	})
    71  }