mirror of
https://github.com/coder/coder.git
synced 2025-07-03 16:13:58 +00:00
feat: order workspaces by running first (#7656)
* wip * use updated sql * wip * Implement sorting in databasefake.go * More fixes * sql fmt --------- Co-authored-by: Marcin Tojek <marcin@coder.com>
This commit is contained in:
@ -198,6 +198,60 @@ func TestAdminViewAllWorkspaces(t *testing.T) {
|
||||
require.Equal(t, 0, len(memberViewWorkspaces.Workspaces), "member in other org should see 0 workspaces")
|
||||
}
|
||||
|
||||
func TestWorkspacesSortOrder(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
|
||||
firstUser := coderdtest.CreateFirstUser(t, client)
|
||||
version := coderdtest.CreateTemplateVersion(t, client, firstUser.OrganizationID, nil)
|
||||
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
|
||||
template := coderdtest.CreateTemplate(t, client, firstUser.OrganizationID, version.ID)
|
||||
|
||||
// c-workspace should be running
|
||||
workspace1 := coderdtest.CreateWorkspace(t, client, firstUser.OrganizationID, template.ID, func(ctr *codersdk.CreateWorkspaceRequest) {
|
||||
ctr.Name = "c-workspace"
|
||||
})
|
||||
coderdtest.AwaitWorkspaceBuildJob(t, client, workspace1.LatestBuild.ID)
|
||||
|
||||
// b-workspace should be stopped
|
||||
workspace2 := coderdtest.CreateWorkspace(t, client, firstUser.OrganizationID, template.ID, func(ctr *codersdk.CreateWorkspaceRequest) {
|
||||
ctr.Name = "b-workspace"
|
||||
})
|
||||
coderdtest.AwaitWorkspaceBuildJob(t, client, workspace2.LatestBuild.ID)
|
||||
|
||||
build2 := coderdtest.CreateWorkspaceBuild(t, client, workspace2, database.WorkspaceTransitionStop)
|
||||
coderdtest.AwaitWorkspaceBuildJob(t, client, build2.ID)
|
||||
|
||||
// a-workspace should be running
|
||||
workspace3 := coderdtest.CreateWorkspace(t, client, firstUser.OrganizationID, template.ID, func(ctr *codersdk.CreateWorkspaceRequest) {
|
||||
ctr.Name = "a-workspace"
|
||||
})
|
||||
coderdtest.AwaitWorkspaceBuildJob(t, client, workspace3.LatestBuild.ID)
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
|
||||
defer cancel()
|
||||
workspacesResponse, err := client.Workspaces(ctx, codersdk.WorkspaceFilter{})
|
||||
require.NoError(t, err, "(first) fetch workspaces")
|
||||
workspaces := workspacesResponse.Workspaces
|
||||
|
||||
expected := []string{
|
||||
workspace3.Name,
|
||||
workspace1.Name,
|
||||
workspace2.Name,
|
||||
}
|
||||
|
||||
var actual []string
|
||||
for _, w := range workspaces {
|
||||
actual = append(actual, w.Name)
|
||||
}
|
||||
|
||||
// the correct sorting order is:
|
||||
// 1. Running workspaces
|
||||
// 2. Sort by usernames
|
||||
// 3. Sort by workspace names
|
||||
require.Equal(t, expected, actual)
|
||||
}
|
||||
|
||||
func TestPostWorkspacesByOrganization(t *testing.T) {
|
||||
t.Parallel()
|
||||
t.Run("InvalidTemplate", func(t *testing.T) {
|
||||
|
Reference in New Issue
Block a user