diff options
Diffstat (limited to 'issues/phase3_step1_trello_write.md')
| -rw-r--r-- | issues/phase3_step1_trello_write.md | 78 |
1 files changed, 0 insertions, 78 deletions
diff --git a/issues/phase3_step1_trello_write.md b/issues/phase3_step1_trello_write.md deleted file mode 100644 index 8f13e47..0000000 --- a/issues/phase3_step1_trello_write.md +++ /dev/null @@ -1,78 +0,0 @@ -# Phase 3 Step 1: Trello Write Operations - -**Status:** Active -**Priority:** High -**Feature:** Interactive Dashboard (Write Ops) - -## Description -Currently, the Trello client is read-only. We need to implement `CreateCard` and `UpdateCard` to enable interactivity (adding tasks, moving cards, completing items). - -## Requirements -1. **CreateCard:** - * Method: `POST /1/cards` - * Parameters: `name`, `idList`, `desc` (optional), `due` (optional). - * Returns: Created `models.Card`. - -2. **UpdateCard:** - * Method: `PUT /1/cards/{id}` - * Parameters: Flexible map of updates (e.g., `idList` to move, `closed=true` to archive). - * Returns: Updated `models.Card` (or just error). - -## Reproduction / Test Plan -Since we cannot hit the real Trello API in tests, we will use `httptest.Server` to mock the API responses. - -### `internal/api/trello_test.go` -```go -package api - -import ( - "encoding/json" - "net/http" - "net/http/httptest" - "testing" - "time" - - "task-dashboard/internal/models" -) - -func TestTrelloClient_CreateCard(t *testing.T) { - // Mock Server - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if r.Method != "POST" { - t.Errorf("Expected POST, got %s", r.Method) - } - if r.URL.Path != "/1/cards" { - t.Errorf("Expected /1/cards, got %s", r.URL.Path) - } - - // Verify params - r.ParseForm() - if r.Form.Get("name") != "New Task" { - t.Errorf("Expected name='New Task', got %s", r.Form.Get("name")) - } - - // Return mock response - card := models.Card{ - ID: "new-card-id", - Name: "New Task", - } - json.NewEncoder(w).Encode(card) - })) - defer server.Close() - - client := &TrelloClient{ - BaseURL: server.URL, - Key: "test-key", - Token: "test-token", - Client: server.Client(), - } - - card, err := client.CreateCard("list-id", "New Task", "Description", nil) - if err != nil { - t.Fatalf("CreateCard failed: %v", err) - } - if card.ID != "new-card-id" { - t.Errorf("Expected ID 'new-card-id', got %s", card.ID) - } -} -``` |
