summaryrefslogtreecommitdiff
path: root/internal/handlers/agent.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/agent.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/agent.go')
-rw-r--r--internal/handlers/agent.go12
1 files changed, 6 insertions, 6 deletions
diff --git a/internal/handlers/agent.go b/internal/handlers/agent.go
index 92f4ce8..15715bc 100644
--- a/internal/handlers/agent.go
+++ b/internal/handlers/agent.go
@@ -99,11 +99,11 @@ func timelineItemToAgentItem(item models.TimelineItem) agentContextItem {
// renderAgentTemplate renders an agent template with common error handling
func (h *Handler) renderAgentTemplate(w http.ResponseWriter, templateName string, data interface{}) {
w.Header().Set("Content-Type", "text/html; charset=utf-8")
- if h.templates == nil {
- h.renderAgentError(w, "Templates not loaded", http.StatusInternalServerError)
+ if h.renderer == nil {
+ h.renderAgentError(w, "Renderer not configured", http.StatusInternalServerError)
return
}
- if err := h.templates.ExecuteTemplate(w, templateName, data); err != nil {
+ if err := h.renderer.Render(w, templateName, data); err != nil {
h.renderAgentError(w, "Template error", http.StatusInternalServerError)
}
}
@@ -539,13 +539,13 @@ func (h *Handler) HandleAgentWebContext(w http.ResponseWriter, r *http.Request)
func (h *Handler) renderAgentError(w http.ResponseWriter, message string, status int) {
w.Header().Set("Content-Type", "text/html; charset=utf-8")
w.WriteHeader(status)
- if h.templates != nil {
- _ = h.templates.ExecuteTemplate(w, "agent-error.html", map[string]interface{}{
+ if h.renderer != nil {
+ _ = h.renderer.Render(w, "agent-error.html", map[string]interface{}{
"Error": message,
"Status": status,
})
} else {
- // Fallback if template not loaded
+ // Fallback if renderer not configured
w.Write([]byte(`<!DOCTYPE html><html><head><title>Error</title></head><body><h1>Error</h1><p>` + message + `</p></body></html>`))
}
}