mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	* fix * fix options * add TEST Co-authored-by: Antoine GIRARD <sapk@users.noreply.github.com> Co-authored-by: Antoine GIRARD <sapk@users.noreply.github.com>
This commit is contained in:
		@@ -7,6 +7,7 @@ package integrations
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"net/url"
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/models"
 | 
			
		||||
@@ -120,3 +121,47 @@ func TestAPIEditIssue(t *testing.T) {
 | 
			
		||||
	assert.Equal(t, body, issueAfter.Content)
 | 
			
		||||
	assert.Equal(t, title, issueAfter.Title)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestAPISearchIssue(t *testing.T) {
 | 
			
		||||
	defer prepareTestEnv(t)()
 | 
			
		||||
 | 
			
		||||
	session := loginUser(t, "user2")
 | 
			
		||||
	token := getTokenForLoggedInUser(t, session)
 | 
			
		||||
 | 
			
		||||
	link, _ := url.Parse("/api/v1/repos/issues/search")
 | 
			
		||||
	req := NewRequest(t, "GET", link.String())
 | 
			
		||||
	resp := session.MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
	var apiIssues []*api.Issue
 | 
			
		||||
	DecodeJSON(t, resp, &apiIssues)
 | 
			
		||||
 | 
			
		||||
	assert.Len(t, apiIssues, 8)
 | 
			
		||||
 | 
			
		||||
	query := url.Values{}
 | 
			
		||||
	query.Add("token", token)
 | 
			
		||||
	link.RawQuery = query.Encode()
 | 
			
		||||
	req = NewRequest(t, "GET", link.String())
 | 
			
		||||
	resp = session.MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
	DecodeJSON(t, resp, &apiIssues)
 | 
			
		||||
	assert.Len(t, apiIssues, 8)
 | 
			
		||||
 | 
			
		||||
	query.Add("state", "closed")
 | 
			
		||||
	link.RawQuery = query.Encode()
 | 
			
		||||
	req = NewRequest(t, "GET", link.String())
 | 
			
		||||
	resp = session.MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
	DecodeJSON(t, resp, &apiIssues)
 | 
			
		||||
	assert.Len(t, apiIssues, 2)
 | 
			
		||||
 | 
			
		||||
	query.Set("state", "all")
 | 
			
		||||
	link.RawQuery = query.Encode()
 | 
			
		||||
	req = NewRequest(t, "GET", link.String())
 | 
			
		||||
	resp = session.MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
	DecodeJSON(t, resp, &apiIssues)
 | 
			
		||||
	assert.Len(t, apiIssues, 10) //there are more but 10 is page item limit
 | 
			
		||||
 | 
			
		||||
	query.Add("page", "2")
 | 
			
		||||
	link.RawQuery = query.Encode()
 | 
			
		||||
	req = NewRequest(t, "GET", link.String())
 | 
			
		||||
	resp = session.MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
	DecodeJSON(t, resp, &apiIssues)
 | 
			
		||||
	assert.Len(t, apiIssues, 0)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -67,20 +67,24 @@ func SearchIssues(ctx *context.APIContext) {
 | 
			
		||||
 | 
			
		||||
	// find repos user can access (for issue search)
 | 
			
		||||
	repoIDs := make([]int64, 0)
 | 
			
		||||
	opts := &models.SearchRepoOptions{
 | 
			
		||||
		PageSize:    15,
 | 
			
		||||
		Private:     false,
 | 
			
		||||
		AllPublic:   true,
 | 
			
		||||
		TopicOnly:   false,
 | 
			
		||||
		Collaborate: util.OptionalBoolNone,
 | 
			
		||||
		UserIsAdmin: ctx.IsUserSiteAdmin(),
 | 
			
		||||
		OrderBy:     models.SearchOrderByRecentUpdated,
 | 
			
		||||
	}
 | 
			
		||||
	if ctx.IsSigned {
 | 
			
		||||
		opts.Private = true
 | 
			
		||||
		opts.AllLimited = true
 | 
			
		||||
		opts.UserID = ctx.User.ID
 | 
			
		||||
	}
 | 
			
		||||
	issueCount := 0
 | 
			
		||||
	for page := 1; ; page++ {
 | 
			
		||||
		repos, count, err := models.SearchRepositoryByName(&models.SearchRepoOptions{
 | 
			
		||||
			Page:        page,
 | 
			
		||||
			PageSize:    15,
 | 
			
		||||
			Private:     true,
 | 
			
		||||
			Keyword:     "",
 | 
			
		||||
			OwnerID:     ctx.User.ID,
 | 
			
		||||
			TopicOnly:   false,
 | 
			
		||||
			Collaborate: util.OptionalBoolNone,
 | 
			
		||||
			UserIsAdmin: ctx.IsUserSiteAdmin(),
 | 
			
		||||
			UserID:      ctx.User.ID,
 | 
			
		||||
			OrderBy:     models.SearchOrderByRecentUpdated,
 | 
			
		||||
		})
 | 
			
		||||
		opts.Page = page
 | 
			
		||||
		repos, count, err := models.SearchRepositoryByName(opts)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			ctx.Error(http.StatusInternalServerError, "SearchRepositoryByName", err)
 | 
			
		||||
			return
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user