summaryrefslogtreecommitdiff
path: root/internal/api/todoist_test.go
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-01-23 21:37:18 -1000
committerPeter Stone <thepeterstone@gmail.com>2026-01-23 21:37:18 -1000
commit465093343ddd398ce5f6377fc9c472d8251c618b (patch)
treed333a2f1c8879f7b114817e929c95e9fcf5f4c3b /internal/api/todoist_test.go
parente23c85577cbb0eac8b847dd989072698ff4e7a30 (diff)
Refactor: reduce code duplication with shared abstractions
- Add BaseClient HTTP abstraction (internal/api/http.go) to eliminate duplicated HTTP boilerplate across Todoist, Trello, and PlanToEat clients - Add response helpers (internal/handlers/response.go) for JSON/HTML responses - Add generic cache wrapper (internal/handlers/cache.go) using Go generics - Consolidate HandleCompleteAtom/HandleUncompleteAtom into handleAtomToggle - Merge TabsHandler into Handler, delete tabs.go - Extract sortTasksByUrgency and filterAndSortTrelloTasks helpers - Update tests to work with new BaseClient structure Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Diffstat (limited to 'internal/api/todoist_test.go')
-rw-r--r--internal/api/todoist_test.go38
1 files changed, 13 insertions, 25 deletions
diff --git a/internal/api/todoist_test.go b/internal/api/todoist_test.go
index 56b1484..88f94f8 100644
--- a/internal/api/todoist_test.go
+++ b/internal/api/todoist_test.go
@@ -10,6 +10,14 @@ import (
"time"
)
+// newTestTodoistClient creates a TodoistClient for testing with custom base URL
+func newTestTodoistClient(baseURL, apiKey string) *TodoistClient {
+ client := NewTodoistClient(apiKey)
+ client.BaseClient.BaseURL = baseURL
+ client.syncClient.BaseURL = baseURL
+ return client
+}
+
func TestTodoistClient_CreateTask(t *testing.T) {
// Mock server
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
@@ -59,11 +67,7 @@ func TestTodoistClient_CreateTask(t *testing.T) {
defer server.Close()
// Create client with mock server URL
- client := &TodoistClient{
- apiKey: "test-key",
- baseURL: server.URL,
- httpClient: &http.Client{},
- }
+ client := newTestTodoistClient(server.URL, "test-key")
// Test CreateTask
ctx := context.Background()
@@ -122,11 +126,7 @@ func TestTodoistClient_CreateTask_WithDueDate(t *testing.T) {
defer server.Close()
// Create client
- client := &TodoistClient{
- apiKey: "test-key",
- baseURL: server.URL,
- httpClient: &http.Client{},
- }
+ client := newTestTodoistClient(server.URL, "test-key")
// Test CreateTask with due date
ctx := context.Background()
@@ -170,11 +170,7 @@ func TestTodoistClient_CompleteTask(t *testing.T) {
defer server.Close()
// Create client
- client := &TodoistClient{
- apiKey: "test-key",
- baseURL: server.URL,
- httpClient: &http.Client{},
- }
+ client := newTestTodoistClient(server.URL, "test-key")
// Test CompleteTask
ctx := context.Background()
@@ -194,11 +190,7 @@ func TestTodoistClient_CompleteTask_Error(t *testing.T) {
defer server.Close()
// Create client
- client := &TodoistClient{
- apiKey: "test-key",
- baseURL: server.URL,
- httpClient: &http.Client{},
- }
+ client := newTestTodoistClient(server.URL, "test-key")
// Test CompleteTask with error
ctx := context.Background()
@@ -235,11 +227,7 @@ func TestTodoistClient_GetProjects(t *testing.T) {
defer server.Close()
// Create client
- client := &TodoistClient{
- apiKey: "test-key",
- baseURL: server.URL,
- httpClient: &http.Client{},
- }
+ client := newTestTodoistClient(server.URL, "test-key")
// Test GetProjects
ctx := context.Background()