From 9f35f7149d8fb790bbe8e4f0ee74f895aea1fc58 Mon Sep 17 00:00:00 2001 From: Peter Stone Date: Tue, 3 Feb 2026 15:15:07 -1000 Subject: 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 --- internal/handlers/settings.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'internal/handlers/settings.go') diff --git a/internal/handlers/settings.go b/internal/handlers/settings.go index 1eabdf5..fa1acee 100644 --- a/internal/handlers/settings.go +++ b/internal/handlers/settings.go @@ -30,7 +30,7 @@ func (h *Handler) HandleSettingsPage(w http.ResponseWriter, r *http.Request) { Toggles: toggles, } - if err := h.templates.ExecuteTemplate(w, "settings.html", data); err != nil { + if err := h.renderer.Render(w, "settings.html", data); err != nil { JSONError(w, http.StatusInternalServerError, "Failed to render settings", err) } } @@ -164,7 +164,7 @@ func (h *Handler) HandleGetSourceOptions(w http.ResponseWriter, r *http.Request) Configs []models.SourceConfig }{source, configs} - HTMLResponse(w, h.templates, "settings-source-options", data) + HTMLResponse(w, h.renderer, "settings-source-options", data) } // HandleToggleFeature toggles a feature flag -- cgit v1.2.3