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:
Alessandro Magionami
2025-03-20 13:20:45 +01:00
committed by GitHub
2 changed files with 68 additions and 0 deletions
@@ -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)
@@ -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,
{}