@@ -2939,8 +2939,12 @@ func TestWorkspaceFavoriteUnfavorite(t *testing.T) {
2939
2939
})
2940
2940
owner = coderdtest .CreateFirstUser (t , client )
2941
2941
memberClient , member = coderdtest .CreateAnotherUser (t , client , owner .OrganizationID )
2942
- wsb1 = dbfake .WorkspaceBuild (t , db , database.Workspace {OwnerID : member .ID , OrganizationID : owner .OrganizationID }).Do ()
2943
- _ = dbfake .WorkspaceBuild (t , db , database.Workspace {OwnerID : owner .UserID , OrganizationID : owner .OrganizationID }).Do ()
2942
+ // This will be our 'favorite' workspace
2943
+ wsb1 = dbfake .WorkspaceBuild (t , db , database.Workspace {OwnerID : member .ID , OrganizationID : owner .OrganizationID }).Do ()
2944
+ // Another workspace for member, but not their favorite.
2945
+ _ = dbfake .WorkspaceBuild (t , db , database.Workspace {OwnerID : member .ID , OrganizationID : owner .OrganizationID }).Do ()
2946
+ // A workspace for another user.
2947
+ _ = dbfake .WorkspaceBuild (t , db , database.Workspace {OwnerID : owner .UserID , OrganizationID : owner .OrganizationID }).Do ()
2944
2948
)
2945
2949
2946
2950
ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
@@ -2949,38 +2953,42 @@ func TestWorkspaceFavoriteUnfavorite(t *testing.T) {
2949
2953
// Initially, workspace should not be favored for member.
2950
2954
workspaces , err := memberClient .Workspaces (ctx , codersdk.WorkspaceFilter {})
2951
2955
require .NoError (t , err )
2952
- require .Len (t , workspaces .Workspaces , 1 )
2953
- require .False (t , workspaces .Workspaces [0 ].Favorite )
2956
+ require .Len (t , workspaces .Workspaces , 2 )
2957
+ require .False (t , workspaces .Workspaces [0 ].Favorite , "no favorites yet" )
2958
+ require .False (t , workspaces .Workspaces [1 ].Favorite , "no favorites yet" )
2954
2959
ws , err := memberClient .Workspace (ctx , wsb1 .Workspace .ID )
2955
2960
require .NoError (t , err )
2956
2961
require .False (t , ws .Favorite )
2957
2962
2958
2963
// Also not for owner.
2959
2964
workspaces , err = client .Workspaces (ctx , codersdk.WorkspaceFilter {})
2960
2965
require .NoError (t , err )
2961
- require .Len (t , workspaces .Workspaces , 2 )
2962
- require .False (t , workspaces .Workspaces [0 ].Favorite )
2963
- require .False (t , workspaces .Workspaces [1 ].Favorite )
2966
+ require .Len (t , workspaces .Workspaces , 3 )
2967
+ require .False (t , workspaces .Workspaces [0 ].Favorite , "this user is impartial and has no favorites" )
2968
+ require .False (t , workspaces .Workspaces [1 ].Favorite , "this user is impartial and has no favorites" )
2969
+ require .False (t , workspaces .Workspaces [2 ].Favorite , "this user is impartial and has no favorites" )
2964
2970
2965
2971
// When member favorites workspace
2966
2972
err = memberClient .FavoriteWorkspace (ctx , wsb1 .Workspace .ID )
2967
2973
require .NoError (t , err )
2968
2974
2969
- // Then it should be favored for them
2975
+ // Then it should be favored for them and show up first.
2970
2976
workspaces , err = memberClient .Workspaces (ctx , codersdk.WorkspaceFilter {})
2971
2977
require .NoError (t , err )
2972
- require .Len (t , workspaces .Workspaces , 1 )
2973
- require .True (t , workspaces .Workspaces [0 ].Favorite )
2978
+ require .Len (t , workspaces .Workspaces , 2 )
2979
+ require .True (t , workspaces .Workspaces [0 ].Favorite , "favorites should come first" )
2980
+ require .False (t , workspaces .Workspaces [1 ].Favorite , "favorites should come first" )
2974
2981
ws , err = memberClient .Workspace (ctx , wsb1 .Workspace .ID )
2975
2982
require .NoError (t , err )
2976
2983
require .True (t , ws .Favorite )
2977
2984
2978
2985
// But not for someone else
2979
2986
workspaces , err = client .Workspaces (ctx , codersdk.WorkspaceFilter {})
2980
2987
require .NoError (t , err )
2981
- require .Len (t , workspaces .Workspaces , 2 )
2982
- require .False (t , workspaces .Workspaces [0 ].Favorite )
2983
- require .False (t , workspaces .Workspaces [1 ].Favorite )
2988
+ require .Len (t , workspaces .Workspaces , 3 )
2989
+ require .False (t , workspaces .Workspaces [0 ].Favorite , "this user is impartial and has no favorites" )
2990
+ require .False (t , workspaces .Workspaces [1 ].Favorite , "this user is impartial and has no favorites" )
2991
+ require .False (t , workspaces .Workspaces [2 ].Favorite , "this user is impartial and has no favorites" )
2984
2992
ws , err = client .Workspace (ctx , wsb1 .Workspace .ID )
2985
2993
require .NoError (t , err )
2986
2994
require .False (t , ws .Favorite )
@@ -2992,18 +3000,20 @@ func TestWorkspaceFavoriteUnfavorite(t *testing.T) {
2992
3000
// Then it should no longer be favored
2993
3001
workspaces , err = memberClient .Workspaces (ctx , codersdk.WorkspaceFilter {})
2994
3002
require .NoError (t , err )
2995
- require .Len (t , workspaces .Workspaces , 1 )
2996
- require .False (t , workspaces .Workspaces [0 ].Favorite )
3003
+ require .Len (t , workspaces .Workspaces , 2 )
3004
+ require .False (t , workspaces .Workspaces [0 ].Favorite , "no longer favorite" )
3005
+ require .False (t , workspaces .Workspaces [1 ].Favorite , "no longer favorite" )
2997
3006
ws , err = memberClient .Workspace (ctx , wsb1 .Workspace .ID )
2998
3007
require .NoError (t , err )
2999
3008
require .False (t , ws .Favorite )
3000
3009
3001
3010
// Assert invariant: workspace should remain unfavorited for a different user
3002
3011
workspaces , err = client .Workspaces (ctx , codersdk.WorkspaceFilter {})
3003
3012
require .NoError (t , err )
3004
- require .Len (t , workspaces .Workspaces , 2 )
3005
- require .False (t , workspaces .Workspaces [0 ].Favorite )
3006
- require .False (t , workspaces .Workspaces [1 ].Favorite )
3013
+ require .Len (t , workspaces .Workspaces , 3 )
3014
+ require .False (t , workspaces .Workspaces [0 ].Favorite , "this user is impartial and has no favorites" )
3015
+ require .False (t , workspaces .Workspaces [1 ].Favorite , "this user is impartial and has no favorites" )
3016
+ require .False (t , workspaces .Workspaces [2 ].Favorite , "this user is impartial and has no favorites" )
3007
3017
ws , err = client .Workspace (ctx , wsb1 .Workspace .ID )
3008
3018
require .NoError (t , err )
3009
3019
require .False (t , ws .Favorite )
0 commit comments