Skip to content

Commit

Permalink
Merge pull request #1505 from lizalc/iterations
Browse files Browse the repository at this point in the history
feat(issues): iteration field, search by iteration
  • Loading branch information
svanharmelen committed Jul 15, 2022
2 parents 4a79f74 + 702e1be commit 498b5f5
Show file tree
Hide file tree
Showing 2 changed files with 170 additions and 0 deletions.
4 changes: 4 additions & 0 deletions issues.go
Expand Up @@ -120,6 +120,7 @@ type Issue struct {
MergeRequestCount int `json:"merge_requests_count"`
EpicIssueID int `json:"epic_issue_id"`
Epic *Epic `json:"epic"`
Iteration *GroupIteration `json:"iteration"`
TaskCompletionStatus *TasksCompletionStatus `json:"task_completion_status"`
}

Expand Down Expand Up @@ -232,6 +233,7 @@ type ListIssuesOptions struct {
UpdatedBefore *time.Time `url:"updated_before,omitempty" json:"updated_before,omitempty"`
Confidential *bool `url:"confidential,omitempty" json:"confidential,omitempty"`
IssueType *string `url:"issue_type,omitempty" json:"issue_type,omitempty"`
IterationID *int `url:"iteration_id,omitempty" json:"iteration_id,omitempty"`
}

// ListIssues gets all issues created by authenticated user. This function
Expand Down Expand Up @@ -284,6 +286,7 @@ type ListGroupIssuesOptions struct {
UpdatedAfter *time.Time `url:"updated_after,omitempty" json:"updated_after,omitempty"`
UpdatedBefore *time.Time `url:"updated_before,omitempty" json:"updated_before,omitempty"`
IssueType *string `url:"issue_type,omitempty" json:"issue_type,omitempty"`
IterationID *int `url:"iteration_id,omitempty" json:"iteration_id,omitempty"`
}

// ListGroupIssues gets a list of group issues. This function accepts
Expand Down Expand Up @@ -343,6 +346,7 @@ type ListProjectIssuesOptions struct {
UpdatedBefore *time.Time `url:"updated_before,omitempty" json:"updated_before,omitempty"`
Confidential *bool `url:"confidential,omitempty" json:"confidential,omitempty"`
IssueType *string `url:"issue_type,omitempty" json:"issue_type,omitempty"`
IterationID *int `url:"iteration_id,omitempty" json:"iteration_id,omitempty"`
}

// ListProjectIssues gets a list of project issues. This function accepts
Expand Down
166 changes: 166 additions & 0 deletions issues_test.go
Expand Up @@ -324,6 +324,62 @@ func TestListIssuesSearchInDescription(t *testing.T) {
t.Errorf("Issues.ListIssues returned %+v, want %+v", issues, want)
}
}

func TestListIssuesSearchByIterationID(t *testing.T) {
mux, server, client := setup(t)
defer teardown(server)

mux.HandleFunc("/api/v4/issues", func(w http.ResponseWriter, r *http.Request) {
testMethod(t, r, http.MethodGet)
testURL(t, r, "/api/v4/issues?iteration_id=90")
fmt.Fprint(w, `
[
{
"id": 1,
"title": "A Test Issue Title",
"description": "This is the description for the issue",
"iteration": {
"id":90,
"iid":4,
"sequence":2,
"group_id":162,
"state":2,
"web_url":"https://gitlab.com/groups/my-group/-/iterations/90"
}
}
]`,
)
})

listProjectIssue := &ListIssuesOptions{
IterationID: Int(90),
}

issues, _, err := client.Issues.ListIssues(listProjectIssue)

if err != nil {
log.Fatal(err)
}

want := []*Issue{{
ID: 1,
Title: "A Test Issue Title",
Description: "This is the description for the issue",
Iteration: &GroupIteration{
ID: 90,
IID: 4,
Sequence: 2,
GroupID: 162,
State: 2,
WebURL: "https://gitlab.com/groups/my-group/-/iterations/90",
},
}}

if !reflect.DeepEqual(want, issues) {
t.Errorf("Issues.ListIssues returned %+v, want %+v", issues, want)
}
}

func TestListProjectIssues(t *testing.T) {
mux, server, client := setup(t)
defer teardown(server)
Expand Down Expand Up @@ -355,6 +411,61 @@ func TestListProjectIssues(t *testing.T) {
}
}

func TestListProjectIssuesSearchByIterationID(t *testing.T) {
mux, server, client := setup(t)
defer teardown(server)

mux.HandleFunc("/api/v4/projects/1/issues", func(w http.ResponseWriter, r *http.Request) {
testMethod(t, r, http.MethodGet)
testURL(t, r, "/api/v4/projects/1/issues?iteration_id=90")
fmt.Fprint(w, `
[
{
"id": 1,
"title": "A Test Issue Title",
"description": "This is the description for the issue",
"iteration": {
"id":90,
"iid":4,
"sequence":2,
"group_id":162,
"state":2,
"web_url":"https://gitlab.com/groups/my-group/-/iterations/90"
}
}
]`,
)
})

listProjectIssue := &ListProjectIssuesOptions{
IterationID: Int(90),
}

issues, _, err := client.Issues.ListProjectIssues(1 ,listProjectIssue)

if err != nil {
log.Fatal(err)
}

want := []*Issue{{
ID: 1,
Title: "A Test Issue Title",
Description: "This is the description for the issue",
Iteration: &GroupIteration{
ID: 90,
IID: 4,
Sequence: 2,
GroupID: 162,
State: 2,
WebURL: "https://gitlab.com/groups/my-group/-/iterations/90",
},
}}

if !reflect.DeepEqual(want, issues) {
t.Errorf("Issues.ListIssues returned %+v, want %+v", issues, want)
}
}

func TestListGroupIssues(t *testing.T) {
mux, server, client := setup(t)
defer teardown(server)
Expand Down Expand Up @@ -388,6 +499,61 @@ func TestListGroupIssues(t *testing.T) {
}
}

func TestListGroupIssuesSearchByIterationID(t *testing.T) {
mux, server, client := setup(t)
defer teardown(server)

mux.HandleFunc("/api/v4/groups/1/issues", func(w http.ResponseWriter, r *http.Request) {
testMethod(t, r, http.MethodGet)
testURL(t, r, "/api/v4/groups/1/issues?iteration_id=90")
fmt.Fprint(w, `
[
{
"id": 1,
"title": "A Test Issue Title",
"description": "This is the description for the issue",
"iteration": {
"id":90,
"iid":4,
"sequence":2,
"group_id":162,
"state":2,
"web_url":"https://gitlab.com/groups/my-group/-/iterations/90"
}
}
]`,
)
})

listProjectIssue := &ListGroupIssuesOptions{
IterationID: Int(90),
}

issues, _, err := client.Issues.ListGroupIssues(1, listProjectIssue)

if err != nil {
log.Fatal(err)
}

want := []*Issue{{
ID: 1,
Title: "A Test Issue Title",
Description: "This is the description for the issue",
Iteration: &GroupIteration{
ID: 90,
IID: 4,
Sequence: 2,
GroupID: 162,
State: 2,
WebURL: "https://gitlab.com/groups/my-group/-/iterations/90",
},
}}

if !reflect.DeepEqual(want, issues) {
t.Errorf("Issues.ListIssues returned %+v, want %+v", issues, want)
}
}

func TestCreateIssue(t *testing.T) {
mux, server, client := setup(t)
defer teardown(server)
Expand Down

0 comments on commit 498b5f5

Please sign in to comment.