Skip to content

Commit

Permalink
Add render tests
Browse files Browse the repository at this point in the history
  • Loading branch information
abneed committed May 22, 2022
1 parent 7743fee commit 36220d6
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 3 deletions.
9 changes: 6 additions & 3 deletions internal/render/render.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ package render

import (
"bytes"
"errors"
"fmt"
"html/template"
"log"
"net/http"
"path/filepath"

Expand Down Expand Up @@ -32,7 +32,7 @@ func AddDefaultData(td *models.TemplateData, r *http.Request) *models.TemplateDa
}

// RenderTemplate renders templates using html/template
func RenderTemplate(w http.ResponseWriter, r *http.Request, tmpl string, td *models.TemplateData) {
func RenderTemplate(w http.ResponseWriter, r *http.Request, tmpl string, td *models.TemplateData) error {
var tc map[string]*template.Template

if app.UseCache {
Expand All @@ -44,7 +44,7 @@ func RenderTemplate(w http.ResponseWriter, r *http.Request, tmpl string, td *mod

t, ok := tc[tmpl]
if !ok {
log.Fatal("Could not get template from template cache")
return errors.New("can't get template from cache")
}

buf := new(bytes.Buffer)
Expand All @@ -55,7 +55,10 @@ func RenderTemplate(w http.ResponseWriter, r *http.Request, tmpl string, td *mod
_, err := buf.WriteTo(w)
if err != nil {
fmt.Println("Error writing template to browser", err)
return err
}

return nil
}

// CreateTemplateCache creates a template cache as a map
Expand Down
39 changes: 39 additions & 0 deletions internal/render/render_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,33 @@ func TestAddDefaultData(t *testing.T) {
}
}

func TestRenderTemplate(t *testing.T) {
pathToTemplates = "./../../templates"
tc, err := CreateTemplateCache()
if err != nil {
t.Error(err)
}

app.TemplateCache = tc

r, err := getSession()
if err != nil {
t.Error(err)
}

var ww myWriter

err = RenderTemplate(&ww, r, "home.page.html", &models.TemplateData{})
if err != nil {
t.Error("error writing template to browser")
}

err = RenderTemplate(&ww, r, "non-existent.page.html", &models.TemplateData{})
if err == nil {
t.Error("rendered template that does not exist")
}
}

func getSession() (*http.Request, error) {
r, err := http.NewRequest("GET", "/some-url", nil)
if err != nil {
Expand All @@ -36,3 +63,15 @@ func getSession() (*http.Request, error) {

return r, nil
}

func TestNewTemplates(t *testing.T) {
NewTemplates(app)
}

func TestCreateTemplateCache(t *testing.T) {
pathToTemplates = "./../../templates"
_, err := CreateTemplateCache()
if err != nil {
t.Error(err)
}
}
16 changes: 16 additions & 0 deletions internal/render/setup_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,19 @@ func TestMain(m *testing.M) {

os.Exit(m.Run())
}

type myWriter struct{}

func (tw *myWriter) Header() http.Header {
var h http.Header
return h
}

func (tw *myWriter) WriteHeader(i int) {

}

func (tw *myWriter) Write(b []byte) (int, error) {
length := len(b)
return length, nil
}

0 comments on commit 36220d6

Please sign in to comment.