diff --git a/models/organization/org_list.go b/models/organization/org_list.go index fccbfe39d0..7f31b49ccd 100644 --- a/models/organization/org_list.go +++ b/models/organization/org_list.go @@ -99,6 +99,7 @@ func GetUserOrgsList(ctx context.Context, user *user_model.User) ([]*MinimalOrg, if err := db.GetEngine(ctx).Select(columnsStr). Table("user"). Where(builder.In("`user`.`id`", queryUserOrgIDs(user.ID, true))). + OrderBy("`user`.lower_name ASC"). Find(&orgs); err != nil { return nil, err } diff --git a/models/organization/org_list_test.go b/models/organization/org_list_test.go index 2b4d493cf2..aa5b1f2636 100644 --- a/models/organization/org_list_test.go +++ b/models/organization/org_list_test.go @@ -4,6 +4,8 @@ package organization_test import ( + "slices" + "strings" "testing" "code.gitea.io/gitea/models/db" @@ -74,3 +76,15 @@ func TestGetUserOrgsList(t *testing.T) { assert.EqualValues(t, 2, orgs[0].NumRepos) } } + +func TestGetUserOrgsListSorting(t *testing.T) { + require.NoError(t, unittest.PrepareTestDatabase()) + orgs, err := organization.GetUserOrgsList(db.DefaultContext, &user_model.User{ID: 1}) + require.NoError(t, err) + + isSorted := slices.IsSortedFunc(orgs, func(a, b *organization.MinimalOrg) int { + return strings.Compare(strings.ToLower(a.Name), strings.ToLower(b.Name)) + }) + + assert.True(t, isSorted) +}