Skip to content

Commit a25f97a

Browse files
committed
fix(browse): show pending badges for visible items
1 parent ec5aedf commit a25f97a

3 files changed

Lines changed: 84 additions & 3 deletions

File tree

internal/api/server_test.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -571,6 +571,45 @@ func TestDetailNotFound(t *testing.T) {
571571
}
572572
}
573573

574+
func TestBrowse_DefaultView_IncludesPendingBadgeDataForVisibleItems(t *testing.T) {
575+
db := newFakeDB()
576+
db.items["w-1"] = &fakeItem{id: "w-1", title: "My item", status: "open", priority: 1, postedBy: "alice", effortLevel: "medium"}
577+
578+
client := sdk.New(sdk.ClientConfig{
579+
DB: db,
580+
RigHandle: "alice",
581+
Mode: "pr",
582+
ListPendingItems: func() (map[string][]sdk.PendingItem, error) {
583+
return map[string][]sdk.PendingItem{
584+
"w-1": {{
585+
RigHandle: "bob",
586+
Status: "in_review",
587+
Branch: "wl/bob/w-1",
588+
PRURL: "https://example.com/pr/1",
589+
}},
590+
}, nil
591+
},
592+
})
593+
594+
ts := httptest.NewServer(New(client))
595+
defer ts.Close()
596+
597+
var browse BrowseResponse
598+
r := getJSON(t, ts, "/api/wanted", &browse)
599+
if r.StatusCode != http.StatusOK {
600+
t.Fatalf("expected 200 browse, got %d", r.StatusCode)
601+
}
602+
if len(browse.Items) != 1 || browse.Items[0].ID != "w-1" {
603+
t.Fatalf("browse = %+v, want visible main item", browse.Items)
604+
}
605+
if browse.Items[0].PendingCount != 1 {
606+
t.Fatalf("pending_count = %d, want 1", browse.Items[0].PendingCount)
607+
}
608+
if len(browse.Items[0].PendingItems) != 1 || browse.Items[0].PendingItems[0].RigHandle != "bob" {
609+
t.Fatalf("pending_items = %+v, want bob pending PR", browse.Items[0].PendingItems)
610+
}
611+
}
612+
574613
func TestDashboard(t *testing.T) {
575614
db := newFakeDB()
576615
db.items["w-1"] = &fakeItem{id: "w-1", title: "My task", status: "claimed", claimedBy: "alice", postedBy: "bob", effortLevel: "medium"}

internal/sdk/reads.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,6 @@ func (c *Client) BrowseContext(ctx context.Context, filter commons.BrowseFilter)
132132
if len(pending) == 0 {
133133
continue
134134
}
135-
if view == "mine" && pendingIDs[items[i].ID] == 0 && len(visiblePendingItems[items[i].ID]) == 0 {
136-
continue
137-
}
138135
pendingIDs[items[i].ID] += len(pending)
139136
overlayPendingClaimedBy(&items[i], pending)
140137
}

internal/sdk/sdk_test.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1198,6 +1198,51 @@ func TestBrowse_DefaultViewTreatsEmptyAsMine(t *testing.T) {
11981198
}
11991199
}
12001200

1201+
func TestBrowse_DefaultViewShowsPendingForVisibleItems(t *testing.T) {
1202+
db := newFakeDB()
1203+
db.seedItem(fakeItem{
1204+
ID: "w-1",
1205+
Title: "My visible item",
1206+
Project: "gascity",
1207+
Type: "bug",
1208+
Priority: 1,
1209+
PostedBy: "alice",
1210+
Status: "open",
1211+
EffortLevel: "small",
1212+
})
1213+
1214+
c := New(ClientConfig{
1215+
DB: db,
1216+
RigHandle: "alice",
1217+
Mode: "pr",
1218+
ListPendingItems: func() (map[string][]PendingItem, error) {
1219+
return map[string][]PendingItem{
1220+
"w-1": {{
1221+
RigHandle: "bob",
1222+
Status: "in_review",
1223+
Branch: "wl/bob/w-1",
1224+
PRURL: "https://example.com/pr/1",
1225+
}},
1226+
}, nil
1227+
},
1228+
})
1229+
1230+
result, err := c.Browse(commons.BrowseFilter{Priority: -1})
1231+
if err != nil {
1232+
t.Fatalf("Browse: %v", err)
1233+
}
1234+
1235+
if len(result.Items) != 1 || result.Items[0].ID != "w-1" {
1236+
t.Fatalf("browse items = %+v, want visible main item", result.Items)
1237+
}
1238+
if result.PendingIDs["w-1"] != 1 {
1239+
t.Fatalf("pending count = %d, want 1", result.PendingIDs["w-1"])
1240+
}
1241+
if len(result.UpstreamPending["w-1"]) != 1 || result.UpstreamPending["w-1"][0].RigHandle != "bob" {
1242+
t.Fatalf("upstream pending = %+v, want bob pending PR", result.UpstreamPending["w-1"])
1243+
}
1244+
}
1245+
12011246
func TestDetail_UpstreamPRs(t *testing.T) {
12021247
db := newFakeDB()
12031248
db.seedItem(fakeItem{ID: "w-1", Title: "Fix bug", Status: "open", Priority: 1, PostedBy: "alice", EffortLevel: "medium"})

0 commit comments

Comments
 (0)