Skip to content

Commit 6392db9

Browse files
committed
add test case
1 parent d530546 commit 6392db9

File tree

1 file changed

+31
-23
lines changed

1 file changed

+31
-23
lines changed

coderd/workspaces_test.go

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2967,56 +2967,64 @@ func TestWorkspaceFavoriteUnfavorite(t *testing.T) {
29672967
client, db = coderdtest.NewWithDatabase(t, &coderdtest.Options{
29682968
Auditor: auditRecorder,
29692969
})
2970-
owner = coderdtest.CreateFirstUser(t, client)
2971-
memberClient, _ = coderdtest.CreateAnotherUser(t, client, owner.OrganizationID)
2970+
owner = coderdtest.CreateFirstUser(t, client)
2971+
memberClient, member = coderdtest.CreateAnotherUser(t, client, owner.OrganizationID)
29722972
// This will be our 'favorite' workspace
2973-
wsb = dbfake.WorkspaceBuild(t, db, database.Workspace{OwnerID: owner.UserID, OrganizationID: owner.OrganizationID}).Do()
2973+
wsb1 = dbfake.WorkspaceBuild(t, db, database.Workspace{OwnerID: member.ID, OrganizationID: owner.OrganizationID}).Do()
2974+
wsb2 = dbfake.WorkspaceBuild(t, db, database.Workspace{OwnerID: owner.UserID, OrganizationID: owner.OrganizationID}).Do()
29742975
)
29752976

29762977
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
29772978
defer cancel()
29782979

29792980
// Initially, workspace should not be favored for member.
2980-
workspaces, err := client.Workspaces(ctx, codersdk.WorkspaceFilter{})
2981-
require.NoError(t, err)
2982-
require.Len(t, workspaces.Workspaces, 1)
2983-
require.False(t, workspaces.Workspaces[0].Favorite, "no favorites yet")
2984-
ws, err := client.Workspace(ctx, wsb.Workspace.ID)
2981+
ws, err := memberClient.Workspace(ctx, wsb1.Workspace.ID)
29852982
require.NoError(t, err)
29862983
require.False(t, ws.Favorite)
29872984

29882985
// When user favorites workspace
2989-
err = client.FavoriteWorkspace(ctx, wsb.Workspace.ID)
2986+
err = memberClient.FavoriteWorkspace(ctx, wsb1.Workspace.ID)
29902987
require.NoError(t, err)
29912988

29922989
// Then it should be favored for them.
2993-
workspaces, err = client.Workspaces(ctx, codersdk.WorkspaceFilter{})
2994-
require.NoError(t, err)
2995-
require.Len(t, workspaces.Workspaces, 1)
2996-
require.True(t, workspaces.Workspaces[0].Favorite, "favorites should come first")
2997-
ws, err = client.Workspace(ctx, wsb.Workspace.ID)
2990+
ws, err = memberClient.Workspace(ctx, wsb1.Workspace.ID)
29982991
require.NoError(t, err)
29992992
require.True(t, ws.Favorite)
30002993

30012994
// When member unfavorites workspace
3002-
err = client.UnfavoriteWorkspace(ctx, wsb.Workspace.ID)
2995+
err = memberClient.UnfavoriteWorkspace(ctx, wsb1.Workspace.ID)
30032996
require.NoError(t, err)
30042997

30052998
// Then it should no longer be favored
3006-
workspaces, err = client.Workspaces(ctx, codersdk.WorkspaceFilter{})
2999+
ws, err = memberClient.Workspace(ctx, wsb1.Workspace.ID)
30073000
require.NoError(t, err)
3008-
require.Len(t, workspaces.Workspaces, 1)
3009-
require.False(t, workspaces.Workspaces[0].Favorite, "no longer favorite")
3010-
ws, err = client.Workspace(ctx, wsb.Workspace.ID)
3011-
require.NoError(t, err)
3012-
require.False(t, ws.Favorite)
3001+
require.False(t, ws.Favorite, "no longer favorite")
30133002

30143003
// Users without write access to the workspace should not be able to perform the above.
3015-
err = memberClient.FavoriteWorkspace(ctx, wsb.Workspace.ID)
3004+
err = memberClient.FavoriteWorkspace(ctx, wsb2.Workspace.ID)
30163005
var sdkErr *codersdk.Error
30173006
require.ErrorAs(t, err, &sdkErr)
30183007
require.Equal(t, http.StatusNotFound, sdkErr.StatusCode())
3019-
err = memberClient.UnfavoriteWorkspace(ctx, wsb.Workspace.ID)
3008+
err = memberClient.UnfavoriteWorkspace(ctx, wsb2.Workspace.ID)
30203009
require.ErrorAs(t, err, &sdkErr)
30213010
require.Equal(t, http.StatusNotFound, sdkErr.StatusCode())
3011+
3012+
// Owners should be able to favorite/unfavorite any workspace.
3013+
err = client.FavoriteWorkspace(ctx, wsb1.Workspace.ID)
3014+
require.NoError(t, err)
3015+
ws, err = client.Workspace(ctx, wsb1.Workspace.ID)
3016+
require.NoError(t, err)
3017+
require.False(t, ws.Favorite, "not owner's favorite")
3018+
ws, err = memberClient.Workspace(ctx, wsb1.Workspace.ID)
3019+
require.NoError(t, err)
3020+
require.True(t, ws.Favorite)
3021+
3022+
err = client.UnfavoriteWorkspace(ctx, wsb1.Workspace.ID)
3023+
require.NoError(t, err)
3024+
ws, err = client.Workspace(ctx, wsb1.Workspace.ID)
3025+
require.NoError(t, err)
3026+
require.False(t, ws.Favorite)
3027+
ws, err = memberClient.Workspace(ctx, wsb1.Workspace.ID)
3028+
require.NoError(t, err)
3029+
require.False(t, ws.Favorite)
30223030
}

0 commit comments

Comments
 (0)