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