summaryrefslogtreecommitdiff
path: root/internal/handlers/widget_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/handlers/widget_test.go')
-rw-r--r--internal/handlers/widget_test.go54
1 files changed, 54 insertions, 0 deletions
diff --git a/internal/handlers/widget_test.go b/internal/handlers/widget_test.go
index f934dba..a638eca 100644
--- a/internal/handlers/widget_test.go
+++ b/internal/handlers/widget_test.go
@@ -1214,3 +1214,57 @@ func TestTimelineItemToWidgetItem_NoProject_NilProjectColor(t *testing.T) {
}
}
+func TestHandleWidgetGet_NoBudgetTrackedTasks_OmitsBudgetStatus(t *testing.T) {
+ db, cleanup := setupTestDB(t)
+ defer cleanup()
+ h := &Handler{store: db}
+
+ req := httptest.NewRequest("GET", "/api/widget", nil)
+ w := httptest.NewRecorder()
+ h.HandleWidgetGet(w, req)
+
+ var resp models.WidgetResponse
+ if err := json.NewDecoder(w.Body).Decode(&resp); err != nil {
+ t.Fatal(err)
+ }
+ if resp.BudgetStatus != nil {
+ t.Errorf("expected nil BudgetStatus with no tracked tasks, got %+v", resp.BudgetStatus)
+ }
+}
+
+func TestHandleWidgetGet_BudgetTrackedTaskDueToday_IncludesBudgetStatus(t *testing.T) {
+ db, cleanup := setupTestDB(t)
+ defer cleanup()
+ h := &Handler{store: db}
+
+ project, err := h.store.CreateProject("Tracked", "#111111")
+ if err != nil {
+ t.Fatal(err)
+ }
+ if err := h.store.SetProjectBudgetTracked(project.ID, true); err != nil {
+ t.Fatal(err)
+ }
+ due := time.Now()
+ if err := h.store.CreateNativeTask(models.Task{ID: "t-tracked", Content: "Tracked task", ProjectID: project.ID, DueDate: &due, EstimatedMinutes: 45}); err != nil {
+ t.Fatal(err)
+ }
+
+ req := httptest.NewRequest("GET", "/api/widget", nil)
+ w := httptest.NewRecorder()
+ h.HandleWidgetGet(w, req)
+
+ var resp models.WidgetResponse
+ if err := json.NewDecoder(w.Body).Decode(&resp); err != nil {
+ t.Fatal(err)
+ }
+ if resp.BudgetStatus == nil {
+ t.Fatal("expected non-nil BudgetStatus")
+ }
+ if resp.BudgetStatus.Today.ScheduledMinutes != 45 {
+ t.Errorf("Today.ScheduledMinutes = %d, want 45", resp.BudgetStatus.Today.ScheduledMinutes)
+ }
+ if resp.BudgetStatus.Week.ScheduledMinutes != 45 {
+ t.Errorf("Week.ScheduledMinutes = %d, want 45", resp.BudgetStatus.Week.ScheduledMinutes)
+ }
+}
+