Skip to content

Commit 452f266

Browse files
authored
feat: Add GetParentIssue for sub-issues (#4232)
1 parent d9fc4c0 commit 452f266

2 files changed

Lines changed: 51 additions & 0 deletions

File tree

github/sub_issue.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,3 +138,24 @@ func (s *SubIssueService) Reprioritize(ctx context.Context, owner, repo string,
138138

139139
return si, resp, nil
140140
}
141+
142+
// GetParentIssue gets the parent issue of a sub-issue.
143+
//
144+
// GitHub API docs: https://docs.github.com/rest/issues/sub-issues?apiVersion=2022-11-28#get-parent-issue
145+
//
146+
//meta:operation GET /repos/{owner}/{repo}/issues/{issue_number}/parent
147+
func (s *SubIssueService) GetParentIssue(ctx context.Context, owner, repo string, subIssueNumber int64) (*Issue, *Response, error) {
148+
u := fmt.Sprintf("repos/%v/%v/issues/%v/parent", owner, repo, subIssueNumber)
149+
req, err := s.client.NewRequest(ctx, "GET", u, nil)
150+
if err != nil {
151+
return nil, nil, err
152+
}
153+
154+
var parentIssue *Issue
155+
resp, err := s.client.Do(req, &parentIssue)
156+
if err != nil {
157+
return nil, resp, err
158+
}
159+
160+
return parentIssue, resp, nil
161+
}

github/sub_issue_test.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,3 +156,33 @@ func TestSubIssuesService_Reprioritize(t *testing.T) {
156156
return resp, err
157157
})
158158
}
159+
160+
func TestSubIssuesService_GetParentIssue(t *testing.T) {
161+
t.Parallel()
162+
client, mux, _ := setup(t)
163+
164+
mux.HandleFunc("/repos/o/r/issues/42/parent", func(w http.ResponseWriter, r *http.Request) {
165+
testMethod(t, r, "GET")
166+
fmt.Fprint(w, `{"id":1, "number":1}`)
167+
})
168+
169+
ctx := t.Context()
170+
got, _, err := client.SubIssue.GetParentIssue(ctx, "o", "r", 42)
171+
if err != nil {
172+
t.Errorf("SubIssues.GetParentIssue returned error: %v", err)
173+
}
174+
175+
want := &Issue{Number: Ptr(1), ID: Ptr(int64(1))}
176+
if !cmp.Equal(got, want) {
177+
t.Errorf("SubIssues.GetParentIssue = %+v, want %+v", got, want)
178+
}
179+
180+
const methodName = "GetParentIssue"
181+
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
182+
got, resp, err := client.SubIssue.GetParentIssue(ctx, "o", "r", 42)
183+
if got != nil {
184+
t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
185+
}
186+
return resp, err
187+
})
188+
}

0 commit comments

Comments
 (0)