github.com/jacobsoderblom/buffalo@v0.11.0/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 }