(t *testing.T)
| 4865 | } |
| 4866 | |
| 4867 | func 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, |
nothing calls this directly
no test coverage detected