From 36220d668e38fec86f2f29dbf6c1d2da5dac98af Mon Sep 17 00:00:00 2001 From: Abneed Date: Sun, 22 May 2022 18:35:21 -0500 Subject: [PATCH] Add render tests --- internal/render/render.go | 9 +++++--- internal/render/render_test.go | 39 ++++++++++++++++++++++++++++++++++ internal/render/setup_test.go | 16 ++++++++++++++ 3 files changed, 61 insertions(+), 3 deletions(-) diff --git a/internal/render/render.go b/internal/render/render.go index 903fce3..4d4ef0b 100644 --- a/internal/render/render.go +++ b/internal/render/render.go @@ -2,9 +2,9 @@ package render import ( "bytes" + "errors" "fmt" "html/template" - "log" "net/http" "path/filepath" @@ -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 { @@ -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) @@ -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 diff --git a/internal/render/render_test.go b/internal/render/render_test.go index eb6367d..9df02b3 100644 --- a/internal/render/render_test.go +++ b/internal/render/render_test.go @@ -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 { @@ -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) + } +} diff --git a/internal/render/setup_test.go b/internal/render/setup_test.go index 9c81a41..0e1d0a8 100644 --- a/internal/render/setup_test.go +++ b/internal/render/setup_test.go @@ -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 +}