From eae9154811b660bcf2333f349176af7ed96b5924 Mon Sep 17 00:00:00 2001 From: Ethan Koenig Date: Fri, 30 Jun 2017 12:50:57 -0400 Subject: [PATCH] Fix SQL bug in models.PullRequests --- integrations/api_pull_test.go | 31 +++++++++++++++++++++++++++++++ models/pull.go | 3 +-- 2 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 integrations/api_pull_test.go diff --git a/integrations/api_pull_test.go b/integrations/api_pull_test.go new file mode 100644 index 000000000..605f51ef9 --- /dev/null +++ b/integrations/api_pull_test.go @@ -0,0 +1,31 @@ +// Copyright 2017 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package integrations + +import ( + "net/http" + "testing" + + "code.gitea.io/gitea/models" + api "code.gitea.io/sdk/gitea" + + "github.com/stretchr/testify/assert" +) + +func TestAPIViewPulls(t *testing.T) { + prepareTestEnv(t) + repo := models.AssertExistsAndLoadBean(t, &models.Repository{ID: 1}).(*models.Repository) + owner := models.AssertExistsAndLoadBean(t, &models.User{ID: repo.OwnerID}).(*models.User) + + session := loginUser(t, "user2") + req := NewRequestf(t, "GET", "/api/v1/repos/%s/%s/pulls?state=all", owner.Name, repo.Name) + resp := session.MakeRequest(t, req) + assert.EqualValues(t, http.StatusOK, resp.HeaderCode) + + var pulls []*api.PullRequest + DecodeJSON(t, resp, &pulls) + expectedLen := models.GetCount(t, &models.Issue{RepoID: repo.ID}, models.Cond("is_pull = ?", true)) + assert.Len(t, pulls, expectedLen) +} diff --git a/models/pull.go b/models/pull.go index 1db0a8974..3d2e5c6d9 100644 --- a/models/pull.go +++ b/models/pull.go @@ -688,8 +688,6 @@ func listPullRequestStatement(baseRepoID int64, opts *PullRequestsOptions) (*xor sess.And("issue.is_closed=?", opts.State == "closed") } - sortIssuesSession(sess, opts.SortType) - if labelIDs, err := base.StringsToInt64s(opts.Labels); err != nil { return nil, err } else if len(labelIDs) > 0 { @@ -723,6 +721,7 @@ func PullRequests(baseRepoID int64, opts *PullRequestsOptions) ([]*PullRequest, prs := make([]*PullRequest, 0, ItemsPerPage) findSession, err := listPullRequestStatement(baseRepoID, opts) + sortIssuesSession(findSession, opts.SortType) if err != nil { log.Error(4, "listPullRequestStatement", err) return nil, maxResults, err