mirror of
https://github.com/coder/coder.git
synced 2025-07-13 21:36:50 +00:00
feat: sort users by username (#7838)
This commit is contained in:
@ -931,14 +931,9 @@ func (q *fakeQuerier) GetUsers(_ context.Context, params database.GetUsersParams
|
||||
users := make([]database.User, len(q.users))
|
||||
copy(users, q.users)
|
||||
|
||||
// Database orders by created_at
|
||||
// Database orders by username
|
||||
slices.SortFunc(users, func(a, b database.User) bool {
|
||||
if a.CreatedAt.Equal(b.CreatedAt) {
|
||||
// Technically the postgres database also orders by uuid. So match
|
||||
// that behavior
|
||||
return a.ID.String() < b.ID.String()
|
||||
}
|
||||
return a.CreatedAt.Before(b.CreatedAt)
|
||||
return a.Username < b.Username
|
||||
})
|
||||
|
||||
// Filter out deleted since they should never be returned..
|
||||
|
@ -5,6 +5,7 @@ import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"sort"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
@ -106,26 +107,25 @@ func TestExactMethods(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// TestUserOrder ensures that the fake database returns users in the order they
|
||||
// were created.
|
||||
// TestUserOrder ensures that the fake database returns users sorted by username.
|
||||
func TestUserOrder(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
db := dbfake.New()
|
||||
now := database.Now()
|
||||
count := 10
|
||||
for i := 0; i < count; i++ {
|
||||
dbgen.User(t, db, database.User{
|
||||
Username: fmt.Sprintf("user%d", i),
|
||||
CreatedAt: now,
|
||||
})
|
||||
|
||||
usernames := []string{"b-user", "d-user", "a-user", "c-user", "e-user"}
|
||||
for _, username := range usernames {
|
||||
dbgen.User(t, db, database.User{Username: username, CreatedAt: now})
|
||||
}
|
||||
|
||||
users, err := db.GetUsers(context.Background(), database.GetUsersParams{})
|
||||
require.NoError(t, err)
|
||||
require.Lenf(t, users, count, "expected %d users", count)
|
||||
require.Lenf(t, users, len(usernames), "expected %d users", len(usernames))
|
||||
|
||||
sort.Strings(usernames)
|
||||
for i, user := range users {
|
||||
require.Equal(t, fmt.Sprintf("user%d", i), user.Username)
|
||||
require.Equal(t, usernames[i], user.Username)
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user