summaryrefslogtreecommitdiff
path: root/internal/handlers/response.go
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-02-03 15:15:07 -1000
committerPeter Stone <thepeterstone@gmail.com>2026-02-03 15:15:07 -1000
commit9f35f7149d8fb790bbe8e4f0ee74f895aea1fc58 (patch)
tree5faa41878609a5c9c332b794a85300090d65bec5 /internal/handlers/response.go
parentf10044eac1997537bcdf7699f5b4284aac16f8e2 (diff)
Refactor template rendering with Renderer interface for testability
Introduce a Renderer interface to abstract template rendering, enabling tests to use MockRenderer instead of requiring real template files. Changes: - Add renderer.go with Renderer interface, TemplateRenderer, and MockRenderer - Update Handler struct to use Renderer instead of *template.Template - Update HTMLResponse() to accept Renderer interface - Replace all h.templates.ExecuteTemplate() calls with h.renderer.Render() - Update all tests to use MockRenderer, removing template file dependencies This eliminates 15+ tests that previously skipped with "Templates not available" and improves test isolation. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Diffstat (limited to 'internal/handlers/response.go')
-rw-r--r--internal/handlers/response.go5
1 files changed, 2 insertions, 3 deletions
diff --git a/internal/handlers/response.go b/internal/handlers/response.go
index 34d4491..679a452 100644
--- a/internal/handlers/response.go
+++ b/internal/handlers/response.go
@@ -2,7 +2,6 @@ package handlers
import (
"encoding/json"
- "html/template"
"log"
"net/http"
)
@@ -30,10 +29,10 @@ func JSONError(w http.ResponseWriter, status int, msg string, err error) {
}
// HTMLResponse renders an HTML template
-func HTMLResponse(w http.ResponseWriter, tmpl *template.Template, name string, data interface{}) {
+func HTMLResponse(w http.ResponseWriter, r Renderer, name string, data interface{}) {
w.Header().Set("Content-Type", "text/html; charset=utf-8")
noCacheHeaders(w)
- if err := tmpl.ExecuteTemplate(w, name, data); err != nil {
+ if err := r.Render(w, name, data); err != nil {
http.Error(w, "Failed to render template", http.StatusInternalServerError)
log.Printf("Error rendering template %s: %v", name, err)
}