summaryrefslogtreecommitdiff
path: root/internal/handlers/handlers_test.go
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-01-25 20:04:03 -1000
committerPeter Stone <thepeterstone@gmail.com>2026-01-25 20:04:03 -1000
commitfa95c71494458070b78270e3d9170076028fc974 (patch)
tree5cb06c5e6962c9d46ee0e0dad106ff6cbf097730 /internal/handlers/handlers_test.go
parent15ac2c98b554e43d287c136b3223d30b0af72b06 (diff)
Refactor: extract helpers and clean up hardcoded HTML
- Extract parseEventTime() and deduplicateEvents() in google_calendar.go - Add scanTask() and scanTasks() SQL helpers in sqlite.go - Move completed-atom HTML to partial template - Add loadTestTemplates() test helper for template-dependent tests Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Diffstat (limited to 'internal/handlers/handlers_test.go')
-rw-r--r--internal/handlers/handlers_test.go28
1 files changed, 28 insertions, 0 deletions
diff --git a/internal/handlers/handlers_test.go b/internal/handlers/handlers_test.go
index d14f71b..3658e0e 100644
--- a/internal/handlers/handlers_test.go
+++ b/internal/handlers/handlers_test.go
@@ -3,9 +3,11 @@ package handlers
import (
"context"
"encoding/json"
+ "html/template"
"net/http"
"net/http/httptest"
"os"
+ "path/filepath"
"testing"
"time"
@@ -58,6 +60,30 @@ func setupTestDB(t *testing.T) (*store.Store, func()) {
return db, cleanup
}
+// loadTestTemplates loads templates for testing from project root
+func loadTestTemplates(t *testing.T) *template.Template {
+ t.Helper()
+
+ // Get path relative to project root
+ tmpl, err := template.ParseGlob(filepath.Join("web", "templates", "*.html"))
+ if err != nil {
+ // Try from internal/handlers (2 levels up)
+ tmpl, err = template.ParseGlob(filepath.Join("..", "..", "web", "templates", "*.html"))
+ if err != nil {
+ t.Logf("Warning: failed to parse templates: %v", err)
+ return nil
+ }
+ }
+
+ // Parse partials
+ tmpl, err = tmpl.ParseGlob(filepath.Join("web", "templates", "partials", "*.html"))
+ if err != nil {
+ tmpl, _ = tmpl.ParseGlob(filepath.Join("..", "..", "web", "templates", "partials", "*.html"))
+ }
+
+ return tmpl
+}
+
// mockTodoistClient creates a mock Todoist client for testing
type mockTodoistClient struct {
tasks []models.Task
@@ -457,6 +483,7 @@ func TestHandleCompleteAtom_Todoist(t *testing.T) {
store: db,
todoistClient: mockTodoist,
config: &config.Config{},
+ templates: loadTestTemplates(t),
}
// Create request
@@ -523,6 +550,7 @@ func TestHandleCompleteAtom_Trello(t *testing.T) {
store: db,
trelloClient: mockTrello,
config: &config.Config{},
+ templates: loadTestTemplates(t),
}
// Create request