Merge pull request #4229 from specklesystems/alessandro/web-2869-filter-dismissed-workspace-join-requests
fix(workspaces): filter out dismissed join requests
This commit is contained in:
@@ -69,6 +69,7 @@ const adminWorkspaceJoinRequestsBaseQueryFactory =
|
||||
.where(WorkspaceAcl.col.role, Roles.Workspace.Admin)
|
||||
.where(WorkspaceAcl.col.userId, filter.userId)
|
||||
.where(WorkspaceJoinRequests.col.workspaceId, filter.workspaceId)
|
||||
.whereNot(WorkspaceJoinRequests.col.status, 'dismissed')
|
||||
if (filter.status) query.andWhere(WorkspaceJoinRequests.col.status, filter.status)
|
||||
return query
|
||||
}
|
||||
@@ -113,6 +114,7 @@ const workspaceJoinRequestsBaseQueryFactory =
|
||||
const query = tables
|
||||
.workspaceJoinRequests(db)
|
||||
.where(WorkspaceJoinRequests.col.userId, filter.userId)
|
||||
.whereNot(WorkspaceJoinRequests.col.status, 'dismissed')
|
||||
if (filter.status) query.andWhere(WorkspaceJoinRequests.col.status, filter.status)
|
||||
if (filter.userId) query.andWhere(WorkspaceJoinRequests.col.userId, filter.userId)
|
||||
if (filter.workspaceId)
|
||||
|
||||
+66
@@ -3,6 +3,7 @@ import { createRandomString } from '@/modules/core/helpers/testHelpers'
|
||||
import { createTestWorkspace } from '@/modules/workspaces/tests/helpers/creation'
|
||||
import { createTestUser, login } from '@/test/authHelper'
|
||||
import {
|
||||
DismissWorkspaceDocument,
|
||||
GetActiveUserWithWorkspaceJoinRequestsDocument,
|
||||
GetWorkspaceWithJoinRequestsDocument,
|
||||
RequestToJoinWorkspaceDocument
|
||||
@@ -48,6 +49,15 @@ describe('WorkspaceJoinRequests GQL', () => {
|
||||
}
|
||||
await createTestWorkspace(workspace1, admin, { domain: 'example.org' })
|
||||
|
||||
const dismissedWorkspace = {
|
||||
id: createRandomString(),
|
||||
name: 'should not be visible',
|
||||
ownerId: admin.id,
|
||||
description: '',
|
||||
discoverabilityEnabled: true
|
||||
}
|
||||
await createTestWorkspace(dismissedWorkspace, admin, { domain: 'example.org' })
|
||||
|
||||
const workspace2 = {
|
||||
id: createRandomString(),
|
||||
name: 'Workspace 2',
|
||||
@@ -99,6 +109,23 @@ describe('WorkspaceJoinRequests GQL', () => {
|
||||
})
|
||||
expect(joinReq2).to.not.haveGraphQLErrors()
|
||||
|
||||
// User requests to join dismissedWorkspace
|
||||
const joinReqDismissed = await sessionUser2.execute(
|
||||
RequestToJoinWorkspaceDocument,
|
||||
{
|
||||
input: {
|
||||
workspaceId: dismissedWorkspace.id
|
||||
}
|
||||
}
|
||||
)
|
||||
expect(joinReqDismissed).to.not.haveGraphQLErrors()
|
||||
const dismissReq = await sessionUser2.execute(DismissWorkspaceDocument, {
|
||||
input: {
|
||||
workspaceId: dismissedWorkspace.id
|
||||
}
|
||||
})
|
||||
expect(dismissReq).to.not.haveGraphQLErrors()
|
||||
|
||||
const sessionAdmin = await login(admin)
|
||||
const workspace1Res = await sessionAdmin.execute(
|
||||
GetWorkspaceWithJoinRequestsDocument,
|
||||
@@ -135,6 +162,19 @@ describe('WorkspaceJoinRequests GQL', () => {
|
||||
expect(items2[0].status).to.equal('pending')
|
||||
expect(items2[0].workspace.id).to.equal(workspace2.id)
|
||||
expect(items2[0].user.id).to.equal(user2.id)
|
||||
|
||||
const workspaceDismissedRes = await sessionAdmin.execute(
|
||||
GetWorkspaceWithJoinRequestsDocument,
|
||||
{
|
||||
workspaceId: dismissedWorkspace.id
|
||||
}
|
||||
)
|
||||
expect(workspaceDismissedRes).to.not.haveGraphQLErrors()
|
||||
const { items: itemsDismissed, totalCount: totalCountDismissed } =
|
||||
workspaceDismissedRes.data!.workspace!.adminWorkspacesJoinRequests!
|
||||
|
||||
expect(totalCountDismissed).to.equal(0)
|
||||
expect(itemsDismissed).to.have.length(0)
|
||||
})
|
||||
})
|
||||
|
||||
@@ -172,6 +212,15 @@ describe('WorkspaceJoinRequests GQL', () => {
|
||||
}
|
||||
await createTestWorkspace(workspace2, admin, { domain: 'example.org' })
|
||||
|
||||
const workspaceDismissed = {
|
||||
id: createRandomString(),
|
||||
name: 'should not see',
|
||||
ownerId: admin.id,
|
||||
description: '',
|
||||
discoverabilityEnabled: true
|
||||
}
|
||||
await createTestWorkspace(workspaceDismissed, admin, { domain: 'example.org' })
|
||||
|
||||
const sessionUser = await login(user)
|
||||
|
||||
// User requests to join workspace1
|
||||
@@ -190,6 +239,23 @@ describe('WorkspaceJoinRequests GQL', () => {
|
||||
})
|
||||
expect(joinReq2).to.not.haveGraphQLErrors()
|
||||
|
||||
// User requests to join workspaceDismissed
|
||||
const joinReqDismissed = await sessionUser.execute(
|
||||
RequestToJoinWorkspaceDocument,
|
||||
{
|
||||
input: {
|
||||
workspaceId: workspaceDismissed.id
|
||||
}
|
||||
}
|
||||
)
|
||||
expect(joinReqDismissed).to.not.haveGraphQLErrors()
|
||||
const dismissReq = await sessionUser.execute(DismissWorkspaceDocument, {
|
||||
input: {
|
||||
workspaceId: workspaceDismissed.id
|
||||
}
|
||||
})
|
||||
expect(dismissReq).to.not.haveGraphQLErrors()
|
||||
|
||||
const res = await sessionUser.execute(
|
||||
GetActiveUserWithWorkspaceJoinRequestsDocument,
|
||||
{}
|
||||
|
||||
Reference in New Issue
Block a user