MCPcopy Index your code
hub / github.com/coder/coder / TestWorkspaceFavoriteUnfavorite

Function TestWorkspaceFavoriteUnfavorite

coderd/workspaces_test.go:4867–4947  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

4865}
4866
4867func TestWorkspaceFavoriteUnfavorite(t *testing.T) {
4868 t.Parallel()
4869 // Given:
4870 var (
4871 auditRecorder = audit.NewMock()
4872 client, db = coderdtest.NewWithDatabase(t, &coderdtest.Options{
4873 Auditor: auditRecorder,
4874 })
4875 owner = coderdtest.CreateFirstUser(t, client)
4876 memberClient, member = coderdtest.CreateAnotherUser(t, client, owner.OrganizationID)
4877 // This will be our 'favorite' workspace
4878 wsb1 = dbfake.WorkspaceBuild(t, db, database.WorkspaceTable{OwnerID: member.ID, OrganizationID: owner.OrganizationID}).Do()
4879 wsb2 = dbfake.WorkspaceBuild(t, db, database.WorkspaceTable{OwnerID: owner.UserID, OrganizationID: owner.OrganizationID}).Do()
4880 )
4881
4882 ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
4883 defer cancel()
4884
4885 // Initially, workspace should not be favored for member.
4886 ws, err := memberClient.Workspace(ctx, wsb1.Workspace.ID)
4887 require.NoError(t, err)
4888 require.False(t, ws.Favorite)
4889
4890 // When user favorites workspace
4891 err = memberClient.FavoriteWorkspace(ctx, wsb1.Workspace.ID)
4892 require.NoError(t, err)
4893
4894 // Then it should be favored for them.
4895 ws, err = memberClient.Workspace(ctx, wsb1.Workspace.ID)
4896 require.NoError(t, err)
4897 require.True(t, ws.Favorite)
4898
4899 // And it should be audited.
4900 require.True(t, auditRecorder.Contains(t, database.AuditLog{
4901 Action: database.AuditActionWrite,
4902 ResourceType: database.ResourceTypeWorkspace,
4903 ResourceTarget: wsb1.Workspace.Name,
4904 UserID: member.ID,
4905 }))
4906 auditRecorder.ResetLogs()
4907
4908 // This should not show for the owner.
4909 ws, err = client.Workspace(ctx, wsb1.Workspace.ID)
4910 require.NoError(t, err)
4911 require.False(t, ws.Favorite)
4912
4913 // When member unfavorites workspace
4914 err = memberClient.UnfavoriteWorkspace(ctx, wsb1.Workspace.ID)
4915 require.NoError(t, err)
4916
4917 // Then it should no longer be favored
4918 ws, err = memberClient.Workspace(ctx, wsb1.Workspace.ID)
4919 require.NoError(t, err)
4920 require.False(t, ws.Favorite, "no longer favorite")
4921
4922 // And it should show in the audit logs.
4923 require.True(t, auditRecorder.Contains(t, database.AuditLog{
4924 Action: database.AuditActionWrite,

Callers

nothing calls this directly

Calls 13

StatusCodeMethod · 0.95
NewMockFunction · 0.92
NewWithDatabaseFunction · 0.92
CreateFirstUserFunction · 0.92
CreateAnotherUserFunction · 0.92
WorkspaceBuildFunction · 0.92
WorkspaceMethod · 0.80
ResetLogsMethod · 0.80
DoMethod · 0.65
FavoriteWorkspaceMethod · 0.65
UnfavoriteWorkspaceMethod · 0.65
ContainsMethod · 0.45

Tested by

no test coverage detected