Skip to content

Commit d300550

Browse files
committed
Extract pagination options for projects
1 parent 65e64f7 commit d300550

File tree

2 files changed

+16
-11
lines changed

2 files changed

+16
-11
lines changed

github/projects.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,15 @@ type ProjectsService service
1818

1919
func (p ProjectV2) String() string { return Stringify(p) }
2020

21-
// ListProjectsOptions specifies optional parameters to list projects for user / organization.
21+
// ListProjectsPaginationOptions specifies optional parameters to list projects for user / organization.
2222
//
2323
// Note: Pagination is powered by before/after cursor-style pagination. After the initial call,
2424
// inspect the returned *Response. Use resp.After as the opts.After value to request
2525
// the next page, and resp.Before as the opts.Before value to request the previous
2626
// page. Set either Before or After for a request; if both are
2727
// supplied GitHub API will return an error. PerPage controls the number of items
2828
// per page (max 100 per GitHub API docs).
29-
type ListProjectsOptions struct {
29+
type ListProjectsPaginationOptions struct {
3030
// A cursor, as given in the Link header. If specified, the query only searches for events before this cursor.
3131
Before string `url:"before,omitempty"`
3232

@@ -35,6 +35,11 @@ type ListProjectsOptions struct {
3535

3636
// For paginated result sets, the number of results to include per page.
3737
PerPage int `url:"per_page,omitempty"`
38+
}
39+
40+
// ListProjectsOptions specifies optional parameters to list projects for user / organization.
41+
type ListProjectsOptions struct {
42+
ListProjectsPaginationOptions
3843

3944
// Q is an optional query string to limit results to projects of the specified type.
4045
Query string `url:"q,omitempty"`

github/projects_test.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func TestProjectsService_ListProjectsForOrg(t *testing.T) {
2929
fmt.Fprint(w, `[{"id":1,"title":"T1","created_at":"2011-01-02T15:04:05Z","updated_at":"2012-01-02T15:04:05Z"}]`)
3030
})
3131

32-
opts := &ListProjectsOptions{Query: "alpha", After: "2", Before: "1"}
32+
opts := &ListProjectsOptions{Query: "alpha", ListProjectsPaginationOptions: ListProjectsPaginationOptions{After: "2", Before: "1"}}
3333
ctx := context.Background()
3434
projects, _, err := client.Projects.ListProjectsForOrg(ctx, "o", opts)
3535
if err != nil {
@@ -55,7 +55,7 @@ func TestProjectsService_ListProjectsForOrg(t *testing.T) {
5555

5656
// still allow both set (no validation enforced) – ensure it does not error
5757
ctxBypass := context.WithValue(context.Background(), BypassRateLimitCheck, true)
58-
if _, _, err = client.Projects.ListProjectsForOrg(ctxBypass, "o", &ListProjectsOptions{Before: "b", After: "a"}); err != nil {
58+
if _, _, err = client.Projects.ListProjectsForOrg(ctxBypass, "o", &ListProjectsOptions{ListProjectsPaginationOptions: ListProjectsPaginationOptions{Before: "b", After: "a"}}); err != nil {
5959
t.Fatalf("unexpected error when both before/after set: %v", err)
6060
}
6161
}
@@ -104,7 +104,7 @@ func TestProjectsService_ListUserProjects(t *testing.T) {
104104
fmt.Fprint(w, `[{"id":2,"title":"UProj","created_at":"2011-01-02T15:04:05Z","updated_at":"2012-01-02T15:04:05Z"}]`)
105105
})
106106

107-
opts := &ListProjectsOptions{Query: "beta", Before: "1", After: "2", PerPage: 2}
107+
opts := &ListProjectsOptions{Query: "beta", ListProjectsPaginationOptions: ListProjectsPaginationOptions{Before: "1", After: "2", PerPage: 2}}
108108
ctx := context.Background()
109109
var ctxBypass context.Context
110110
projects, _, err := client.Projects.ListProjectsForUser(ctx, "u", opts)
@@ -131,7 +131,7 @@ func TestProjectsService_ListUserProjects(t *testing.T) {
131131

132132
// still allow both set (no validation enforced) – ensure it does not error
133133
ctxBypass = context.WithValue(context.Background(), BypassRateLimitCheck, true)
134-
if _, _, err = client.Projects.ListProjectsForUser(ctxBypass, "u", &ListProjectsOptions{Before: "b", After: "a"}); err != nil {
134+
if _, _, err = client.Projects.ListProjectsForUser(ctxBypass, "u", &ListProjectsOptions{ListProjectsPaginationOptions: ListProjectsPaginationOptions{Before: "b", After: "a"}}); err != nil {
135135
t.Fatalf("unexpected error when both before/after set: %v", err)
136136
}
137137
}
@@ -204,7 +204,7 @@ func TestProjectsService_ListProjectsForOrg_pagination(t *testing.T) {
204204
}
205205

206206
// Use resp.After as opts.After for next page
207-
opts := &ListProjectsOptions{After: resp.After}
207+
opts := &ListProjectsOptions{ListProjectsPaginationOptions: ListProjectsPaginationOptions{After: resp.After}}
208208
second, resp2, err := client.Projects.ListProjectsForOrg(ctx, "o", opts)
209209
if err != nil {
210210
t.Fatalf("second page error: %v", err)
@@ -252,7 +252,7 @@ func TestProjectsService_ListProjectsForUser_pagination(t *testing.T) {
252252
t.Fatalf("expected resp.After=ucursor2 got %q", resp.After)
253253
}
254254

255-
opts := &ListProjectsOptions{After: resp.After}
255+
opts := &ListProjectsOptions{ListProjectsPaginationOptions: ListProjectsPaginationOptions{After: resp.After}}
256256
second, resp2, err := client.Projects.ListProjectsForUser(ctx, "u", opts)
257257
if err != nil {
258258
t.Fatalf("second page error: %v", err)
@@ -314,7 +314,7 @@ func TestProjectsService_ListProjectFieldsForOrg(t *testing.T) {
314314
]`)
315315
})
316316

317-
opts := &ListProjectsOptions{Query: "text", After: "2", Before: "1"}
317+
opts := &ListProjectsOptions{Query: "text", ListProjectsPaginationOptions: ListProjectsPaginationOptions{After: "2", Before: "1"}}
318318
ctx := context.Background()
319319
fields, _, err := client.Projects.ListProjectFieldsForOrg(ctx, "o", 1, opts)
320320
if err != nil {
@@ -365,7 +365,7 @@ func TestProjectsService_ListProjectFieldsForOrg(t *testing.T) {
365365

366366
// still allow both set (no validation enforced) – ensure it does not error
367367
ctxBypass := context.WithValue(context.Background(), BypassRateLimitCheck, true)
368-
if _, _, err = client.Projects.ListProjectFieldsForOrg(ctxBypass, "o", 1, &ListProjectsOptions{Before: "b", After: "a"}); err != nil {
368+
if _, _, err = client.Projects.ListProjectFieldsForOrg(ctxBypass, "o", 1, &ListProjectsOptions{ListProjectsPaginationOptions: ListProjectsPaginationOptions{Before: "b", After: "a"}}); err != nil {
369369
t.Fatalf("unexpected error when both before/after set: %v", err)
370370
}
371371
}
@@ -408,7 +408,7 @@ func TestProjectsService_ListProjectFieldsForOrg_pagination(t *testing.T) {
408408
}
409409

410410
// Use resp.After as opts.After for next page
411-
opts := &ListProjectsOptions{After: resp.After}
411+
opts := &ListProjectsOptions{ListProjectsPaginationOptions: ListProjectsPaginationOptions{After: resp.After}}
412412
second, resp2, err := client.Projects.ListProjectFieldsForOrg(ctx, "o", 1, opts)
413413
if err != nil {
414414
t.Fatalf("second page error: %v", err)

0 commit comments

Comments
 (0)