jojo/tests/integration/org_team_test.go
Antonin Delpeuch 7eebf5642c fix: paginate list of repositories in a team (#12549)
Follow-up to #12103 / !12447, which added pagination for lists of team members. @mahlzahn has [noticed](https://codeberg.org/forgejo/forgejo/issues/12103#issuecomment-14454947) that the same problem applies to the list of repositories controlled by a team, so this PR adds pagination for that too.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/12549
Reviewed-by: Robert Wolff <mahlzahn@posteo.de>
2026-05-14 22:30:56 +02:00

74 lines
2.8 KiB
Go

// Copyright 2026 The Forgejo Authors
// SPDX-License-Identifier: GPL-3.0-or-later
package integration
import (
"fmt"
"net/http"
"strings"
"testing"
"forgejo.org/models/db"
"forgejo.org/models/organization"
"forgejo.org/models/unittest"
user_model "forgejo.org/models/user"
"forgejo.org/modules/setting"
"forgejo.org/modules/test"
"forgejo.org/tests"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestPaginatedMembers(t *testing.T) {
defer tests.PrepareTestEnv(t)()
// To make sure that pagination kicks in even though the test team has few members
defer test.MockVariableValue(&setting.UI.MembersPagingNum, 2)()
org := unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 17})
team := unittest.AssertExistsAndLoadBean(t, &organization.Team{ID: 9})
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 29})
assert.GreaterOrEqual(t, org.NumMembers, 3)
isOrgMember, err := organization.IsOrganizationMember(db.DefaultContext, org.ID, user.ID)
require.NoError(t, err)
assert.True(t, isOrgMember)
isTeamMember, err := organization.IsTeamMember(db.DefaultContext, team.OrgID, team.ID, user.ID)
require.NoError(t, err)
assert.True(t, isTeamMember)
assert.Equal(t, org.ID, team.OrgID)
session := loginUser(t, user.Name)
teamURL := fmt.Sprintf("/org/%s/teams/%s", org.Name, team.LowerName)
newVar := session.MakeRequest(t, NewRequest(t, "GET", teamURL), http.StatusOK).Body
doc := NewHTMLParser(t, newVar)
assert.Contains(t, strings.TrimSpace(doc.Find("a.item.navigation:contains('Next')").AttrOr("href", "")), fmt.Sprintf("%s?page=2", teamURL))
}
func TestPaginatedRepos(t *testing.T) {
defer tests.PrepareTestEnv(t)()
// To make sure that pagination kicks in even though the test team has few repos
defer test.MockVariableValue(&setting.UI.User.RepoPagingNum, 2)()
org := unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 3})
team := unittest.AssertExistsAndLoadBean(t, &organization.Team{ID: 1})
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
assert.GreaterOrEqual(t, team.NumRepos, 3)
isOrgMember, err := organization.IsOrganizationMember(db.DefaultContext, org.ID, user.ID)
require.NoError(t, err)
assert.True(t, isOrgMember)
isTeamMember, err := organization.IsTeamMember(db.DefaultContext, team.OrgID, team.ID, user.ID)
require.NoError(t, err)
assert.True(t, isTeamMember)
assert.Equal(t, org.ID, team.OrgID)
session := loginUser(t, user.Name)
teamURL := fmt.Sprintf("/org/%s/teams/%s/repositories", org.Name, team.LowerName)
body := session.MakeRequest(t, NewRequest(t, "GET", teamURL), http.StatusOK).Body
doc := NewHTMLParser(t, body)
assert.Contains(t, strings.TrimSpace(doc.Find("a.item.navigation:contains('Next')").AttrOr("href", "")), fmt.Sprintf("%s?page=2", teamURL))
}