mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	
				
					committed by
					
						
						techknowlogick
					
				
			
			
				
	
			
			
			
						parent
						
							26c1550643
						
					
				
				
					commit
					aecd9231ba
				
			
							
								
								
									
										43
									
								
								integrations/org_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								integrations/org_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
			
		||||
// Copyright 2019 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"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	"github.com/stretchr/testify/assert"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestOrgRepos(t *testing.T) {
 | 
			
		||||
	prepareTestEnv(t)
 | 
			
		||||
 | 
			
		||||
	var (
 | 
			
		||||
		users = []string{"user1", "user2"}
 | 
			
		||||
		cases = map[string][]string{
 | 
			
		||||
			"alphabetically":        {"repo21", "repo3", "repo5"},
 | 
			
		||||
			"reversealphabetically": {"repo5", "repo3", "repo21"},
 | 
			
		||||
		}
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
	for _, user := range users {
 | 
			
		||||
		t.Run(user, func(t *testing.T) {
 | 
			
		||||
			session := loginUser(t, user)
 | 
			
		||||
			for sortBy, repos := range cases {
 | 
			
		||||
				req := NewRequest(t, "GET", "/user3?sort="+sortBy)
 | 
			
		||||
				resp := session.MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
 | 
			
		||||
				htmlDoc := NewHTMLParser(t, resp.Body)
 | 
			
		||||
 | 
			
		||||
				sel := htmlDoc.doc.Find("a.name")
 | 
			
		||||
				assert.EqualValues(t, len(repos), len(sel.Nodes))
 | 
			
		||||
				for i := 0; i < len(repos); i++ {
 | 
			
		||||
					assert.EqualValues(t, repos[i], strings.TrimSpace(sel.Eq(i).Text()))
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -657,6 +657,7 @@ type AccessibleReposEnvironment interface {
 | 
			
		||||
	Repos(page, pageSize int) ([]*Repository, error)
 | 
			
		||||
	MirrorRepos() ([]*Repository, error)
 | 
			
		||||
	AddKeyword(keyword string)
 | 
			
		||||
	SetSort(SearchOrderBy)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type accessibleReposEnv struct {
 | 
			
		||||
@@ -665,6 +666,7 @@ type accessibleReposEnv struct {
 | 
			
		||||
	teamIDs []int64
 | 
			
		||||
	e       Engine
 | 
			
		||||
	keyword string
 | 
			
		||||
	orderBy SearchOrderBy
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// AccessibleReposEnv an AccessibleReposEnvironment for the repositories in `org`
 | 
			
		||||
@@ -683,6 +685,7 @@ func (org *User) accessibleReposEnv(e Engine, userID int64) (AccessibleReposEnvi
 | 
			
		||||
		userID:  userID,
 | 
			
		||||
		teamIDs: teamIDs,
 | 
			
		||||
		e:       e,
 | 
			
		||||
		orderBy: SearchOrderByRecentUpdated,
 | 
			
		||||
	}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -722,8 +725,8 @@ func (env *accessibleReposEnv) RepoIDs(page, pageSize int) ([]int64, error) {
 | 
			
		||||
		Table("repository").
 | 
			
		||||
		Join("INNER", "team_repo", "`team_repo`.repo_id=`repository`.id").
 | 
			
		||||
		Where(env.cond()).
 | 
			
		||||
		GroupBy("`repository`.id,`repository`.updated_unix").
 | 
			
		||||
		OrderBy("updated_unix DESC").
 | 
			
		||||
		GroupBy("`repository`.id,`repository`."+strings.Fields(string(env.orderBy))[0]).
 | 
			
		||||
		OrderBy(string(env.orderBy)).
 | 
			
		||||
		Limit(pageSize, (page-1)*pageSize).
 | 
			
		||||
		Cols("`repository`.id").
 | 
			
		||||
		Find(&repoIDs)
 | 
			
		||||
@@ -742,6 +745,7 @@ func (env *accessibleReposEnv) Repos(page, pageSize int) ([]*Repository, error)
 | 
			
		||||
 | 
			
		||||
	return repos, env.e.
 | 
			
		||||
		In("`repository`.id", repoIDs).
 | 
			
		||||
		OrderBy(string(env.orderBy)).
 | 
			
		||||
		Find(&repos)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -752,7 +756,7 @@ func (env *accessibleReposEnv) MirrorRepoIDs() ([]int64, error) {
 | 
			
		||||
		Join("INNER", "team_repo", "`team_repo`.repo_id=`repository`.id AND `repository`.is_mirror=?", true).
 | 
			
		||||
		Where(env.cond()).
 | 
			
		||||
		GroupBy("`repository`.id, `repository`.updated_unix").
 | 
			
		||||
		OrderBy("updated_unix DESC").
 | 
			
		||||
		OrderBy(string(env.orderBy)).
 | 
			
		||||
		Cols("`repository`.id").
 | 
			
		||||
		Find(&repoIDs)
 | 
			
		||||
}
 | 
			
		||||
@@ -776,3 +780,7 @@ func (env *accessibleReposEnv) MirrorRepos() ([]*Repository, error) {
 | 
			
		||||
func (env *accessibleReposEnv) AddKeyword(keyword string) {
 | 
			
		||||
	env.keyword = keyword
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (env *accessibleReposEnv) SetSort(orderBy SearchOrderBy) {
 | 
			
		||||
	env.orderBy = orderBy
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -441,6 +441,7 @@ func showOrgProfile(ctx *context.Context) {
 | 
			
		||||
			ctx.ServerError("AccessibleReposEnv", err)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		env.SetSort(orderBy)
 | 
			
		||||
		if len(keyword) != 0 {
 | 
			
		||||
			env.AddKeyword(keyword)
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user