github.com/res-am/buffalo@v0.11.1/render/markdown_test.go (about)

     1  package render_test
     2  
     3  import (
     4  	"bytes"
     5  	"os"
     6  	"path/filepath"
     7  	"strings"
     8  	"testing"
     9  
    10  	"github.com/gobuffalo/buffalo/render"
    11  	"github.com/gobuffalo/packr"
    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.New(render.Options{
    35  				TemplatesBox: packr.NewBox(tmpDir),
    36  			}).HTML,
    37  		}
    38  
    39  		for _, j := range table {
    40  			re := j(filepath.Base(tmpFile.Name()))
    41  			r.Equal("text/html", re.ContentType())
    42  			bb := &bytes.Buffer{}
    43  			err = re.Render(bb, map[string]interface{}{"name": "Mark"})
    44  			r.NoError(err)
    45  			r.Equal("<p>Mark</p>", strings.TrimSpace(bb.String()))
    46  		}
    47  	})
    48  
    49  	t.Run("with a layout", func(st *testing.T) {
    50  		r := require.New(st)
    51  
    52  		layout, err := os.Create(filepath.Join(tmpDir, "test.html"))
    53  		r.NoError(err)
    54  		defer os.Remove(layout.Name())
    55  
    56  		_, err = layout.Write([]byte("<body><%= yield %></body>"))
    57  		r.NoError(err)
    58  
    59  		re := render.New(render.Options{
    60  			HTMLLayout:   filepath.Base(layout.Name()),
    61  			TemplatesBox: packr.NewBox(tmpDir),
    62  		}).HTML(filepath.Base(tmpFile.Name()))
    63  
    64  		r.Equal("text/html", re.ContentType())
    65  		bb := &bytes.Buffer{}
    66  		err = re.Render(bb, map[string]interface{}{"name": "Mark"})
    67  		r.NoError(err)
    68  		r.Equal("<body><p>Mark</p>\n</body>", strings.TrimSpace(bb.String()))
    69  	})
    70  }