From e107192be5efb65807c7da3b6aa99ce3555944d0 Mon Sep 17 00:00:00 2001 From: Peter Stone Date: Tue, 13 Jan 2026 14:18:24 -1000 Subject: Implement Todoist write operations - API layer (Part 1) Add CreateTask and CompleteTask methods to Todoist API client: Models: - Add Project struct (ID, Name) to types.go - Add Projects []Project field to DashboardData API Interface: - Change GetProjects signature to return []models.Project - Ensure CreateTask and CompleteTask are defined Todoist Client: - Add baseURL field for testability - Refactor GetProjects to return []models.Project - Update GetTasks to build project map from new GetProjects - Implement CreateTask with JSON payload support - Implement CompleteTask using POST to /tasks/{id}/close Tests: - Create comprehensive todoist_test.go - Test CreateTask, CreateTask with due date, CompleteTask - Test error handling and GetProjects - Update mock client in handlers tests All tests pass. Ready for handlers and UI integration. Co-Authored-By: Claude Sonnet 4.5 --- internal/handlers/handlers_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'internal/handlers') diff --git a/internal/handlers/handlers_test.go b/internal/handlers/handlers_test.go index 13973df..ac940bb 100644 --- a/internal/handlers/handlers_test.go +++ b/internal/handlers/handlers_test.go @@ -70,8 +70,8 @@ func (m *mockTodoistClient) GetTasks(ctx context.Context) ([]models.Task, error) return m.tasks, nil } -func (m *mockTodoistClient) GetProjects(ctx context.Context) (map[string]string, error) { - return map[string]string{}, nil +func (m *mockTodoistClient) GetProjects(ctx context.Context) ([]models.Project, error) { + return []models.Project{}, nil } func (m *mockTodoistClient) CreateTask(ctx context.Context, content, projectID string, dueDate *time.Time, priority int) (*models.Task, error) { -- cgit v1.2.3