github.com/rotblauer/buffalo@v0.7.1-0.20170112214545-7aa55ef80dd3/render/template_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_Template(t *testing.T) { 16 r := require.New(t) 17 18 tmpFile, err := ioutil.TempFile("", "test") 19 r.NoError(err) 20 defer os.Remove(tmpFile.Name()) 21 22 _, err = tmpFile.Write([]byte("{{name}}")) 23 r.NoError(err) 24 25 type ji func(string, ...string) render.Renderer 26 27 table := []ji{ 28 render.Template, 29 render.New(render.Options{}).Template, 30 } 31 32 for _, j := range table { 33 re := j("foo/bar", tmpFile.Name()) 34 r.Equal("foo/bar", re.ContentType()) 35 bb := &bytes.Buffer{} 36 err = re.Render(bb, render.Data{"name": "Mark"}) 37 r.NoError(err) 38 r.Equal("Mark", strings.TrimSpace(bb.String())) 39 } 40 } 41 42 func Test_Template_Partial(t *testing.T) { 43 r := require.New(t) 44 45 tPath, err := ioutil.TempDir("", "") 46 r.NoError(err) 47 defer os.Remove(tPath) 48 49 partFile, err := os.Create(filepath.Join(tPath, "_foo.html")) 50 r.NoError(err) 51 52 _, err = partFile.Write([]byte("Foo -> {{name}}")) 53 r.NoError(err) 54 55 tmpFile, err := os.Create(filepath.Join(tPath, "index.html")) 56 r.NoError(err) 57 58 _, err = tmpFile.Write([]byte(`{{partial "foo.html"}}`)) 59 r.NoError(err) 60 61 type ji func(string, ...string) render.Renderer 62 63 table := []ji{ 64 render.New(render.Options{TemplatesPath: tPath}).Template, 65 } 66 67 for _, j := range table { 68 re := j("foo/bar", "index.html") 69 r.Equal("foo/bar", re.ContentType()) 70 bb := &bytes.Buffer{} 71 err = re.Render(bb, render.Data{"name": "Mark"}) 72 r.NoError(err) 73 r.Equal("Foo -> Mark", strings.TrimSpace(bb.String())) 74 } 75 } 76 77 func Test_Template_WithCaching(t *testing.T) { 78 r := require.New(t) 79 80 tmpFile, err := ioutil.TempFile("", "test") 81 r.NoError(err) 82 defer os.Remove(tmpFile.Name()) 83 84 _, err = tmpFile.Write([]byte("{{name}}")) 85 r.NoError(err) 86 87 type ji func(string, ...string) render.Renderer 88 89 table := []ji{ 90 render.Template, 91 render.New(render.Options{ 92 CacheTemplates: true, 93 }).Template, 94 } 95 96 for _, j := range table { 97 re := j("foo/bar", tmpFile.Name()) 98 r.Equal("foo/bar", re.ContentType()) 99 bb := &bytes.Buffer{} 100 err = re.Render(bb, render.Data{"name": "Mark"}) 101 r.NoError(err) 102 r.Equal("Mark", strings.TrimSpace(bb.String())) 103 } 104 }